我在水平滚动视图上设置了一个"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);
}发布于 2013-07-23 16:32:01
您当前的代码片段不会起作用,因为它没有告诉任何其他对象滚动已经改变-它只是触发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函数设置它。
https://stackoverflow.com/questions/17804885
复制相似问题