解决Android 6.0 RecyclerView嵌套在ScrollView中显示不全

ScrollView嵌套RecyclerViewAndroid6.0以下能正常显示,但是在6.0以上就会出现RecyclerView显示不全的bug。尝试多种方法之后终于找到解决办法,特在此记录下。

解决办法是在RecyclerView的外部套上一层根布局RelativeLayout或LinearLayout

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


        <android.support.v7.widget.RecyclerView
            android:id="@+id/menuRv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/margin_16"
            android:layout_marginRight="@dimen/margin_16"/>


</RelativeLayout>

发现RecyclerView完全显示出来了,完美解决!

隐隐感觉只是android:descendantFocusability="blocksDescendants"一句在起作用。于是尝试在根布局上加这句,再把这个RelativeLayout删除。。问题又重现了。。可是后来发现不加android:descendantFocusability="blocksDescendants"同样能完美解决,好奇怪的解决方案!!先不求甚解地用上吧。。

android:descendantFocusability属性的值有三种: 
beforeDescendants:viewgroup会优先其子类控件而获取到焦点 
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点 
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点


猜你喜欢

转载自blog.csdn.net/jdazy/article/details/79414887