Передний план на HorizontalScrollView - PullRequest
0 голосов
/ 03 февраля 2011

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

Основной макет в 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 Ответ

1 голос
/ 03 февраля 2011

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

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

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);      
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...