ScrollView
嵌套RecyclerView
在Android6.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
只有当其子类控件不需要获取焦点时才获取焦点