我想做一个水平滚动视图分页。如果你向右移动屏幕,它会显示右边的“页面”,如果你向左移动屏幕,它会显示左边的“页面”。

最佳答案

我以前做过这件事。您可以通过自定义触摸监听器执行此操作:

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;
                }
            }
        });
    }

我想,这是不言而喻的。这假设页面的宽度是恒定的,并且等于整个滚动视图的宽度。

10-08 06:36