美文网首页Android
Android ScrollView 嵌套RecyclerVie

Android ScrollView 嵌套RecyclerVie

作者: 文质彬_已然未然 | 来源:发表于2020-08-29 00:11 被阅读0次

    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会优先其子类控件而获取到焦点

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

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

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

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

    相关文章

      网友评论

        本文标题:Android ScrollView 嵌套RecyclerVie

        本文链接:https://www.haomeiwen.com/subject/odfrsktx.html