viewpager+fragment+recyclerview滑动卡顿/滑动冲突(非预加载问题)

问题描述

首先我要记录的滑动冲突不是水平和垂直的滑动冲突,而是水平水平的滑动冲突!!!!

简单说吧,项目里用到了一个viewpager+fragment+recyclerview的结构,recyclerview放在fragment里,然后使用viewpager来切换fragment。

项目里的recyclerview是不需要滑动的,之所以选用recyclerview是因为当一个个item传入时使用recyclerview来排列是一件很轻松的事。

然后问题来了,当我做完这些后,我滑动我的viewpager,发现每个页面都需要滑动两次才可以划过去,第一次滑动时见面显示我滑动到头了,然后再滑动就成功了。(他们都是水平滑动)

于是问题就是recyclerview的滑动和viewpager的滑动冲突了,所以在这里我需要把recyclerview的滑动禁用(反正我也用不着)

以下是我使用过的几种没有见效的方法,但还是列在这了

1. 修改xml文件

找到recyclerview的xml文件,然后加上一句 android:overScrollMode=“never”
如下所示

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:overScrollMode="never"/>

在我的项目中设置后,滑动不会再出现提示到底的那个白边,但还是需要滑动两次才可以翻页

2.设置recyclerview

就一句话

recyclerview.setNestedScrollingEnabled(false)

这是我在一个博客里看到的,原文地址 https://blog.csdn.net/maxiaoteng_321519/article/details/76639366
最后博主也进一步添加了描述

扫描二维码关注公众号,回复: 14750283 查看本文章

“今天试了一下,setNestedScrollingEnabled(false)只适用于NestedScrollingChild的子类,简单来说就只适用于嵌套布局(前些天用的刚好是嵌套布局)。不嵌套的话还是看看其他人的答案吧”

解决方案

哈哈哈重头戏来了,其实也特别简单,就一句话 linearLayoutManager.setSmoothScrollbarEnabled(false);
代码如下:

        RecyclerView recyclerView = (RecyclerView)view.findViewById(R.id.icon_recyclerview);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        //禁用滑动
        linearLayoutManager.setSmoothScrollbarEnabled(false);
        
        recyclerView.setLayoutManager(linearLayoutManager);
        RecyclerViewIconAdapter recyclerViewIconAdapter = new RecyclerViewIconAdapter(for_mApps,getActivity());
        recyclerView.setAdapter(recyclerViewIconAdapter);

在给recyclerview设置layoutmanager之前,将layoutmanager的setSmoothScrollbarEnabled设置为false就ok了,问题解决

猜你喜欢

转载自blog.csdn.net/qq_33445510/article/details/82787936