Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当水平滚动视图到达右侧时?_Android_Android Layout - Fatal编程技术网

Android 当水平滚动视图到达右侧时?

Android 当水平滚动视图到达右侧时?,android,android-layout,Android,Android Layout,有没有办法知道HorizontalScrollView何时达到了正确的限制?是的,但首先必须重写HorizontalScrollView类并提供自己的侦听器。由于某些原因,SDK不允许您直接访问OnScrollChanged侦听器 请执行以下操作: public class FixedScrollView extends HorizontalScrollView { private ScrollViewListener scrollViewListener = null; pu

有没有办法知道HorizontalScrollView何时达到了正确的限制?

是的,但首先必须重写HorizontalScrollView类并提供自己的侦听器。由于某些原因,SDK不允许您直接访问OnScrollChanged侦听器

请执行以下操作:

public class FixedScrollView extends HorizontalScrollView
{
    private ScrollViewListener scrollViewListener = null;

    public FixedScrollView(Context context)
    {
        super(context);
    }

    public FixedScrollView(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
    }

    public FixedScrollView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    public void setScrollViewListener(ScrollViewListener scrollViewListener)
    {
        this.scrollViewListener = scrollViewListener;
    }

    @Override
    protected void onScrollChanged(int x, int y, int oldx, int oldy)
    {
        super.onScrollChanged(x, y, oldx, oldy);
        if (scrollViewListener != null)
        {
            scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
        }
    }

    public interface ScrollViewListener
    {
        void onScrollChanged(FixedScrollView scrollView, int x, int y, int oldx, int oldy);
    }
}
然后您可以在代码中使用它,如下所示:

FixedScrollView scrollView = (FixedScrollView) findViewById(R.id.scroller);
设置onScrollChangeListener:

scrollView.setScrollViewListener(scrollerChanged);
然后在侦听器中执行以下操作以检测边缘:

ScrollViewListener scrollerChanged = new ScrollViewListener()
    {

        @Override
        public void onScrollChanged(FixedScrollView scrollView, int x, int y, int oldx, int oldy)
        {
            int maxScrollX = scrollView.getChildAt(0).getMeasuredWidth() - scrollView.getMeasuredWidth();

            if (scrollView.getScrollX() == 0)
            {
                //Left side
            }
            else if (scrollView.getScrollX() == maxScrollX)
            {
                //Right side
            }
            else
            {
                //Neither left nor right
            }
        }
    };