欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局显示不全

程序员文章站 2022-06-21 23:22:27
Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局显示不全显示不全原因解决方法一:解决方法二:解决方法三:历史上的今天(2021/3/3):1971年3月3日,在*“我们也要搞人造卫星”指示的鼓舞下,我国成功地发射了一颗科学实验人造地球卫星。  卫星重221公斤。其运行轨道距地球最近点266公里,最远点1826公里,轨道平面与地球赤道平面的夹龟为69.9度;绕地球一周需时106分钟。它用20009兆赫和19995兆赫的频率成功地...

Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局显示不全

显示不全原因

业务需求效果图(1.1):

Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局显示不全

ScrollView的onMeasureLinearLayout的onMeasure冲突,导致LinearLayout无论是否设置宽度 = match_parent 都将自动计算

参考文档

解决方法一:

将RecyclerView使用RelativeLayout包裹,并添加android:descendantFocusability="blocksDescendants"属性

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

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/rel"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>

            </RelativeLayout>

android:descendantFocusability属性的含义是:
当一个view获取焦点时,定义ViewGroup和其子控件两者之间的关系。

它一共有3个属性值,它们分别是:

  • beforeDescendants 会优先子类控件而获取焦点

  • afterDescendants只有当子类控件不需要获取焦点的时候才去获取焦点

  • blocksDescendants会覆盖子类控件而直接获取焦点

解决方法二:

先在xml布局中将你的ScrollView替换成android.support.v4.widget.NestedScrollView,并在java代码中设置

recyclerView.setNestedScrollingEnabled(false);

解决方法三:

将子条目布局由LinearLayout替换为RelativeLayout即可(亲测有效)

本文地址:https://blog.csdn.net/weixin_44819566/article/details/114303986