android SwipeRefreshLayout嵌套ViewPager 滑动冲突问题

android SwipeRefreshLayout嵌套ViewPager滑动冲突问题

背景:市面上,越来越多的app都在使用SwipeRefreshLayout刷新控件,比如手机百度啊,知乎什么的,咱们也要跟上潮流,不能掉队,最近项目就使用到了SwipeRefreshLayout刷新控件,但是遇到了一些小问题。


问题1:项目中页面布局由外到内,由上到下大致是:SwipeRefreshLayout(ViewPager广告+原生+WebView)组合而成的一个大页面。但是当左右滑动广告时,如果稍稍纵向带点滑动距离,就会触发SwipeRefreshLayout的滑动效果,而且滑动起来特别不灵敏。

分析:当水平滑动banner时,SwipeRefreshLayout也会收到滑动监听,对滑动手势做出反馈,当滑动手势不是完全水平方向时,SwipeRefreshLayout认为滑动手势是垂直方向的,因而也会触发refresh效果。

解决方案:当ViewPager banner在翻页滑动时,监听PageChange事件,当ViewPager 处于滑动忙碌状态时,禁用掉SwipeRefreshLayout,具体如下:

        ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {
                SwipyRefreshLayout.setEnabled(state == ViewPager.SCROLL_STATE_IDLE);
            }
        });


你可能感兴趣的:(android)