Показать больше в Horizontal ScrollView в Android

Я не уверен, какое название будет лучшим, но с картинкой будет понятно, чего я хочу.

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

Но в Android 2.3.3 он показывает белый вид в конце, когда есть больше элементов, тогда как в Android 4.0 он не отображается. Смотрите изображение ниже:

введите здесь описание изображения

Посмотрите здесь, в Android 2.3, я показываю белый вид, что ясно говорит мне о том, что кнопок больше, но такого же результата я не получаю в Android 4.0 или выше.
Кто-нибудь может мне помочь? как это отображать.


person Panchal Amit    schedule 23.12.2013    source источник
comment
См. этот пост: stackoverflow.com/questions/ 8531006/ Установите прозрачный цвет подсказки кэша.   -  person androidu    schedule 23.12.2013
comment
Нет, @MarcelCăşvan, это не так, я хочу показать этот белый вид в конце, чтобы пользователь мог понять, что вид больше   -  person Panchal Amit    schedule 23.12.2013
comment
Я вижу, вы рассматривали возможность анимации прокрутки, когда пользователю предоставляется это действие? Например, анимировать прокрутку от последнего элемента справа к первому.   -  person androidu    schedule 23.12.2013
comment
Попробуйте создать вкладки фрагментов для одного и того же файла . Получите ссылку здесь. фрагменты внутри узла вкладки фрагмента"> stackoverflow.com/questions/18120510/. В противном случае попробуйте использовать HorizontalScrollView.   -  person AndroidHacker    schedule 23.12.2013
comment
setOverScrollMode (View.OVER_SCROLL_ALWAYS); Попробуй это.   -  person Nikola Despotoski    schedule 23.12.2013


Ответы (1)


Вы можете легко воспроизвести это поведение, расширив виджет HorizontalScrollView и нарисовав два правильно размещенных изображения/рисунка:

public class CustomHorizontalScrollView extends HorizontalScrollView {

    private static final int SHADOW_WIDTH = 35;
    private GradientDrawable mDrawableLeft;
    private GradientDrawable mDrawableRight;
    private Rect mBounds = new Rect();

    public CustomHorizontalScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mDrawableLeft = new GradientDrawable(Orientation.LEFT_RIGHT,
                new int[] { Color.GRAY, Color.TRANSPARENT });
        mDrawableRight = new GradientDrawable(Orientation.RIGHT_LEFT,
                new int[] { Color.GRAY, Color.TRANSPARENT });
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
        // the scroll value
        final int offset = this.getScrollX();
        mBounds.setEmpty();
        mBounds.bottom = getMeasuredHeight();
        // check made to remove the shadow if we are at the left edge of the
        // screen so we don't interfere with the edge effect
        if (offset != 0) {
            // left drawable
            mBounds.left = offset;
            mBounds.right = offset + SHADOW_WIDTH;
            mDrawableLeft.setBounds(mBounds);
            mDrawableLeft.draw(canvas);
        }
        // check made to remove the shadow if we are at the right edge of the
        // screen so we don't interfere with the edge effect
        if ((offset + getMeasuredWidth()) < computeHorizontalScrollRange()) {
            // right drawable
            mBounds.left = offset + getMeasuredWidth() - SHADOW_WIDTH;
            mBounds.right = offset + getMeasuredWidth();
            mDrawableRight.setBounds(mBounds);
            mDrawableRight.draw(canvas);
        }
    }

}
person user    schedule 23.12.2013