2011-02-03 3 views
0

Я пытаюсь добавить градиент переднего плана в HorizontallScrollView. Все работает отлично, но после перемещения градиента прокрутки с макетом. Вот скриншоты этого вопроса: После запуска appliaction: http://img819.imageshack.us/img819/6622/horizontalscroll.jpg и после прокрутки: http://img709.imageshack.us/img709/388/horizontalscroll2.jpgForeground on HorizontalScrollView

Компонов в XML:

<RelativeLayout 
android:id="@+id/RelativeLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:background="@layout/backgroundgradient" 
> 

<include layout="@layout/header" /> 


<HorizontalScrollView android:id="@+id/ScrollView1" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:scrollbars="none" 
        android:foreground="@layout/scrollforegrad" 
        android:background="@layout/scrollbgrgrad" 
        android:layout_below="@id/LayoutHeader" 
        > 

        <LinearLayout 
         android:id="@+id/ThemeContainer" 
         android:orientation="horizontal" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         /> 
</HorizontalScrollView> 

И градиент XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainForegroundGrad" 

> 
    <gradient 
     android:startColor="@color/scrollForegroundSide" 
     android:centerColor="@color/scrollForegroundCenter" 
     android:endColor="@color/scrollForegroundSide" 
     android:angle="0" 
    /> 
    <corners android:radius="0dp" /> 
</shape> 

Если кто-то был такой проблема или знаете, как ее решить, пожалуйста, поделитесь :) Заранее спасибо.

ответ

1

Я думаю, вы не можете использовать передний план в HorizontalScrollView. Foreground drawable - это представление прокрутки функции, наследуемое от FrameLayout, и похоже, что эта функция не реализована в прокрутке.

Однако довольно легко переопределить метод HorizontalScrollView draw(), чтобы вы могли рисовать поверх содержимого. Я даже могу предоставить вам некоторые фрагменты кода из моего проекта, которые делают это.

public void draw(Canvas aCanvas) { 
    super.draw(aCanvas); 

    getDrawingRect(mDrawingRect); 

    Gravity.apply(Gravity.CENTER_VERTICAL|Gravity.LEFT, 
      mForegroundDrawable.getIntrinsicWidth(), 
      mForegroundDrawable.getIntrinsicHeight(), 
      mDrawingRect, mForegroundDrawableBounds); 

    mForegroundDrawableBounds.offset(ARROWS_MARGIN_SIDES, ARROWS_MARGIN_VERTICAL); 

    mForegroundDrawable.setBounds(mForegroundDrawableBounds); 
    mForegroundDrawable.draw(aCanvas);  
} 
Смежные вопросы