我创建了一个扩展ListView
的类,以便我可以覆盖onScrollChanged
,以便我可以判断列表是向上还是向下滚动。但是每次调用它时,所有值都为0.
为常规ScrollView
执行此操作会返回我正在查找的值,这是否与ScrollView不同?
这是我的包装类
public class ImageScrollView extends ListView {
OnScrollChangedListener listener;
public interface OnScrollChangedListener{
public void onScrollChangedListener(int l, int t, int oldl, int oldt);
}
public ImageScrollView(Context context) {
super(context);
}
public ImageScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt){
if(listener != null){
listener.onScrollChangedListener(l,t,oldl,oldt);
}
}
}
答案 0 :(得分:3)
对于listview
,onScrollChanged
总是会返回所有值0
,显然也会返回getScrollY()
等。onScrollListener
根据您的需要,您必须实施onScroll
界面,该界面将通过onScrollStateChanged
和onScroll(AbsListView list ...)
{
View c = list.getChildAt(0);
if (c == null) {
return;
}
//assuming all list items have same height
int scrolly = -c.getTop() + list.getPaddingTop() + list.getFirstVisiblePosition() * c.getHeight();
// some code
}
进行回调。
这些函数都不会为您提供实际的滚动值,因为您必须计算它,
例如在
中{{1}}
请参阅以下帖子,我得到的答案最多 Android getting exact scroll position in ListView