我有一个必须一次显示 4 个项目的 ListView。我必须一项一项地滚动。
用户滚动 ListView 后,我必须重新调整滚动以适合 4 个项目。我的意思是,我无法将某个项目显示一半。
还有一个问题,有没有办法获取当前ListView的scrollY偏移量?因为listView.getScrollY()方法是来自View,而不是ListView内部的Scroller对象。
我找到了一个很好的解决方案。它非常适合我。
也许我的回答会对某人有所帮助。
class ScrollListener implements AbsListView.OnScrollListener{
boolean aligned;
@Override
public void onScrollStateChanged(AbsListView absListView, int state) {
if (state == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
aligned = false;
}
if (state == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
if (!aligned) {
if (Math.abs(absListView.getChildAt(0).getY()) < Math.abs(absListView.getChildAt(1).getY())) {
listView.smoothScrollToPosition(absListView.getFirstVisiblePosition());
} else {
listView.smoothScrollToPosition(absListView.getLastVisiblePosition());
}
}
aligned = true;
}
}
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
}
我必须说,在我的情况下,我有两个可见的项目,所以如果你有 4 个,你应该使用索引("getChildAt(0)" and "getChildAt(1)")
。
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)