其他分享
首页 > 其他分享> > android-ListView滚动-一对一

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