Android ScrollView 嵌套RecyclerView 卡顿现象

1.情形一:有时候开发时会遇到ScrollView里嵌套列表,很自然的就会用到RecyclerView ,而recyclerView.setNestedScrollingEnabled(false);可以解决滑动冲突,开始ScrollView 嵌套RecyclerView 分页上拉刚开始时很顺,没有问题,当上拉数据越来越多的时候就开始卡,最后页面直接就卡死了,不断的排除各种原因,图片过大,glide封装优化,内存泄漏,自定义控件问题,多开辟子线程,注释代码都还是会卡,后面开始定位是不是RecyclerView的复用回收问题。

解决方法:

如果是 TabLayout+ViewPager+Fragment :fragment的根目录不用NestScrollView 直接用LinearLayout 嵌套

RecyclerView 代码中记得去了recyclerView.setNestedScrollingEnabled(false); 不然会有滑动问题

2.情形二:在写一个ScrollView 嵌套Viewpager和RecyclerView的布局时,RecyclerView老是自动获得焦点然后在ScrollView

内部上下自动滚动,尝试了在ScrollView的直接子LinearLayout使用

android:focusable=“true” android:focusableInTouchMode=“true”

但在一些情况下 ScrollView还是会自动获得焦点然后滚动起来,最后的方案

解决方案:

在ScrollView下面的LinearLayout加上android:descendantFocusability="blocksDescendants"属性, 截获 ListView的焦 点, 从而达到禁止ScrollView自动滚动.顺便解释下这个属性的其他用法:

该属性是当一个为view获取焦点时,定义viewGroup和子控件两者之间的关系。属性的值有三种:beforeDescendants:viewgroup会优先其子类控件而获取到焦点

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

afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

3.如果是RecyclerView 上面还有几个布局推荐使用这个大神的用法

  https://github.com/385841539/RecycleviewStaggered.git

猜你喜欢

转载自blog.csdn.net/yanhuomatou2015/article/details/108287789