【问题标题】:ViewPager Flickers on touch inside empty areaViewPager 在空白区域内触摸时闪烁
【发布时间】:2013-09-30 17:12:54
【问题描述】:
  • 我在视图中有一个场景 ViewPager 用于显示描述列数的多个片段
  • 现在在平板电脑中,当视图分页器内只有两个页面/列时,两个页面后视图分页器中仍有空白区域,因为视图分页器占据了平板电脑的全屏。
  • 当用户触摸此空白区域时,其余页面开始在屏幕中来回滚动闪烁。
  • 如何限制用户在这个空白区域触摸?我还需要允许用户滑动页面来滚动,如何管理这两个场景。

【问题讨论】:

    标签: android android-viewpager flicker


    【解决方案1】:

    我也遇到了同样的情况。我的解决方案是在显示的页面少于填充 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;
                }
            }
        });
    

    【讨论】:

    • Tnx 为我工作。偶尔还是会从左到右跳,但还是可以的
    • 谢谢,这么多年后,我不得不使用 ViewPager,这个解决方案来拯救我的需要。
    • 如何获取adapter.getNumberOfPagesOnScreen()方法?
    • 1. requestDisallowInterceptTouchEvent(true) 似乎不是必需的。 2.“getNumberOfPagesOnScreen()”描述了在一个屏幕宽度内你的viewpager中的项目数。你可以自己决定。
    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多