2013-12-23 3 views
6

Я не уверен, какой будет лучший титул, но с картинкой будет ясно, что я хочу.Показать больше в Горизонтальный ScrollView в android

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

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

enter image description here

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

+0

Смотрите этот пост: http://stackoverflow.com/questions/8531006/list-color- turn-black-while-scrolling Установите цвет подсказки кеша прозрачным. – androidu

+0

No @ MarcelCăşvan это не так, я хочу показать это белое представление в конце, чтобы пользователь мог понять его, что есть больше вид –

+0

Я вижу, вы считали, что анимация scrollview, когда пользователю представлена ​​эта активность? Как оживить прокрутку от последнего элемента справа, до первого – androidu

ответ

3

Вы можете легко повторить это поведение, расширяя 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); 
     } 
    } 

} 
+0

Большое спасибо @Luksprog, он отлично работает –

Смежные вопросы