ScrollView嵌套RecyclerView在Android6.0以下能正常显示,但是在6.0以上就会出现RecyclerView显示不全的bug。尝试多种方法之后终于找到解决办法,特在此记录下。
解决方案
在RecyclerView的外部套上一层RelativeLayout
<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只有当其子类控件不需要获取焦点时才获取焦点