5
  • 我在视图中有一个场景 ViewPager 用于显示描述列数的多个片段
  • 现在在平板电脑中,当视图分页器内只有两个页面/列时,两个页面后视图分页器中仍有空白区域,因为视图分页器占据了平板电脑的全屏。
  • 当用户触摸这个空白区域时,剩余的页面开始在屏幕中来回滚动闪烁。
  • 如何限制用户在这个空白区域触摸?我还需要允许用户滑动页面来滚动,如何管理这两个场景。
4

1 回答 1

6

我刚刚遇到了同样的情况。我的解决方案是在显示的页面少于填充 viewpager 所需的页面时使用触摸事件

viewPager.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            requestDisallowInterceptTouchEvent(true); // not sure if this is required
            PagerAdapter adapter = viewPager.getAdapter();
            // consume the move event if we have only one page full - removes flickering artifact
            // getNumberOfPagesOnScreen() is a mehtod we have to get the number of pages we are going to display. ymmv
            if (adapter.getCount() <= adapter.getNumberOfPagesOnScreen() && event.getAction() == MotionEvent.ACTION_MOVE) {
                return true;
            } else {
                return false;
            }
        }
    });
于 2014-08-04T02:19:16.123 回答