如何为ScrollView设置图像而不是渐弱边缘?

我正在使用水平滚动视图,动态我会添加项目。 如果不。 项目不仅仅是在屏幕上显示项目,我想在边缘显示图像(箭头)(如滚动视图显示渐变边缘)。 我该怎么做。

只要看下面的图像,我想创造那样的。

这是xml代码

   

在此处输入图像描述

    答:你必须创建自己的类,它扩展了HorizontalScrollView

     public class ExtendedHorizontalScrollView extends HorizontalScrollView { private IScrollStateListener scrollStateListener; public HorizontalScrollViewForMenu(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public HorizontalScrollViewForMenu(Context context, AttributeSet attrs) { super(context, attrs); } public HorizontalScrollViewForMenu(Context context) { super(context); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); prepare(); } private void prepare() { if (scrollStateListener != null) { View content = this.getChildAt(0); if (content.getLeft() >= 0) scrollStateListener.onScrollMostLeft(); if (content.getLeft() < 0) scrollStateListener.onScrollFromMostLeft(); if (content.getRight() <= getWidth()) scrollStateListener.onScrollMostRight(); if (content.getLeft() > getWidth()) scrollStateListener.onScrollFromMostRight(); } } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (scrollStateListener != null) { if (l == 0) scrollStateListener.onScrollMostLeft(); else if (oldl == 0) scrollStateListener.onScrollFromMostLeft(); int mostRightL = this.getChildAt(0).getWidth() - getWidth(); if (l >= mostRightL) scrollStateListener.onScrollMostRight(); if (oldl >= mostRightL && l < mostRightL) scrollStateListener.onScrollFromMostRight(); } } public void setScrollStateListener(IScrollStateListener listener) { scrollStateListener = listener; } public interface IScrollStateListener { void onScrollMostLeft(); void onScrollFromMostLeft(); void onScrollMostRight(); void onScrollFromMostRight(); } } 

    B.使用它来定义布局:

            

    C.当您无法再滚动时,添加用于禁用箭头的逻辑。

     ((ExtendedHorizontalScrollView)findViewById(R.id.scroller)).setScrollStateListener(new IScrollStateListener() { public void onScrollMostRight() { ((View) scroller.getParent()).findViewById(R.id.navigation_right).setVisibility(View.INVISIBLE); } public void onScrollMostLeft() { ((View) scroller.getParent()).findViewById(R.id.navigation_left).setVisibility(View.INVISIBLE); } public void onScrollFromMostLeft() { ((View) scroller.getParent()).findViewById(R.id.navigation_left).setVisibility(View.VISIBLE); } public void onScrollFromMostRight() { ((View) scroller.getParent()).findViewById(R.id.navigation_right).setVisibility(View.VISIBLE); } }); 

    一个简单的替代方法是制作一个没有褪色边缘的滚动视图,然后在滚动视图的下方或顶部添加带箭头的图像。

    你的xml类似的东西: