horizo​​ntalscrollview - onScroll?

时间:2013-07-23 08:18:24

标签: android view horizontalscrollview onscroll

我在水平滚动视图上设置了“OnTouchListener”。我无法设置onScrollListener。这在水平滚动视图中是不可能的吗?

这不起作用:

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    // TODO Auto-generated method stub
    Log.i("Scrolling", "X from ["+oldl+"] to ["+l+"]");
    super.onScrollChanged(l, t, oldl, oldt);
}

1 个答案:

答案 0 :(得分:7)

您当前的代码段不起作用,因为它没有告诉任何其他对象滚动已更改 - 它只是触发onScrollChanged()的超级版本。你应该得到日志条目。

要监听滚动更改,您需要使用自己的侦听器接口扩展ScrollView。类似于此的东西:

public class MyScrollView extends ScrollView{
    public interface MyScrollViewListener{
        public abstract void onScrollChanged(int l, int t, int oldl, int oldt);
    }

    MyScrollViewListener mMyScrollViewListener; 

    public void setMyScrollViewListener(MyScrollViewListenerlistener){
        mMyScrollViewListener = listener;
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);

        if(mMyScrollViewListener != null){
            mMyScrollViewListener.onScrollChanged(l, t, oldl, oldt);
        }
    }
}

然后您可以使用此滚动视图代替您当前的滚动视图。确保在您想要监听滚动更改的位置实现接口MyScrollViewListener,并使用setMyScrollViewListener函数进行设置。