Android6.0以上关于RecyclerView显是不全的问题

Posted zhangmiao14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android6.0以上关于RecyclerView显是不全的问题相关的知识,希望对你有一定的参考价值。

android6.0以上关于RecyclerView显是不全的问题

需求描述

适配的时候发现Android 6.0以上,RecyclerView显示不全,以下是没有问题的。
这个时候查看布局文件,可以看到RecyclerView是嵌套在ScrollView中的。

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:overScrollMode="never"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />
    </ScrollView>

解决方法

第一种解决方法

方法

在RecyclerView上在嵌套上一层RelativeLayout,添加属性android:descendantFocusability=”blocksDescendants”(当一个view获取焦点时,viewGroup会覆盖子类控件而直接获取焦点)解决嵌套卡顿的问题。

注意,设立只能使用RelativeLayout,使用FrameLayout、LinearLayout等其他常用的布局控件是不行的。亲测。

代码
 <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:descendantFocusability="blocksDescendants">

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

        </RelativeLayout>
    </ScrollView>

第二种解决方法

方法

使用android.support.v4.widget.NestedScrollView替代ScrollView,并在代码中设置recyclerView.setNestedScrollingEnabled(false)(设置是否允许嵌套滑动)。既可以填ITEM显示不全的坑,又可以填嵌套滑动卡顿的坑。

代码
    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:overScrollMode="never"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />
    </android.support.v4.widget.NestedScrollView>
recyclerView.setNestedScrollingEnabled(false);

总结

相比较而言,个人觉得第二种解决方法更好,第一种方法布局嵌套,总有一种想让人优化的冲动,所以觉得第二种解决方法更好。


以上是关于Android6.0以上关于RecyclerView显是不全的问题的主要内容,如果未能解决你的问题,请参考以下文章

Android6.0以上系统动态获取权限

android6.0以上权限动态申请

聊聊Android6.0 以上系统权限

im即时通讯开发:Android6.0及以上的保活之被杀复活

解决ActiveAndroid在Android6.0及以上的设备上,表创建失败的问题

im即时通讯开发:Android6.0及以上的保活之被杀复活