android-ListView滚动-一对一
作者:互联网
我有一个ListView,一次必须显示4个项目.我必须逐一滚动一个项目.
用户滚动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)”和“ getChildAt(1)”).
祝好运!
标签:android-listview,android-widget,android 来源: https://codeday.me/bug/20191201/2079767.html