水平滚动视图分页

3

我希望实现一个分页的HorizontalScrollView。如果你向右滑动屏幕,那么它会显示右边的“页面”,如果你向左滑动屏幕,那么它会显示左边的“页面”。


1
尝试使用画廊,其中项目宽度为页面宽度。 - Karan
1个回答

14

我以前做过这件事。您可以通过自定义触摸侦听器来完成此操作:

public MyHorizontalScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL ){
                    int scrollX = getScrollX();
                    int itemWidth = getMeasuredWidth();
                    int activeItem = ((scrollX + itemWidth / 2) / itemWidth);
                    int scrollTo = activeItem * itemWidth;
                    smoothScrollTo(scrollTo, 0);

                    return true;
                } else {
                    return false;
                }
            }
        });
    }

我觉得非常容易理解。这假设你的页面宽度是恒定的,并且等于整个滚动视图的宽度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接