开发司机经验增加图片信息需求时,在编辑界面增加了NestedScrollView,(NestedScrollView嵌套图片上传组件,组件继承RecyclerView)会将RecyclerView中的列表全部展开出来。

第一张图增加NestedScrollView后是全部展开的;第二幅图没加,在有限的地方展示图片。
NestedScrollView嵌套RecyclerView问题分析
NestedScrollView嵌套RecyclerView问题分析
NestedScrollView嵌套RecyclerView问题分析

NestedScrollView嵌套RecyclerView问题分析
NestedScrollView嵌套RecyclerView问题分析

直观来看,给人的感觉就是一个没有限制高度,一个限制高度。

再结合RecyclerView的定义:

NestedScrollView嵌套RecyclerView问题分析

官方意思就是,在有限的窗口展示大量数据,再看之前写的代码,“layout_height”设置的是“wrap_content”。
NestedScrollView嵌套RecyclerView问题分析

那么现在我修改“layout_height”为固定值“300dp”,效果如下图。RecyclerView里的数据就没有全部展开。
NestedScrollView嵌套RecyclerView问题分析

NestedScrollView嵌套RecyclerView问题分析

那么为什么会出现这个情况呢?

View测量流程:

在ViewGroup测量时,他还需要测量child。

NestedScrollView嵌套RecyclerView问题分析

在NestedScrollView里的measureChild方法中,使用的是UNSPECIFIED。
NestedScrollView嵌套RecyclerView问题分析

在RecyclerView中

#onMeasure()方法

ParentView已经给RecyclerView指定了具体的尺寸,这种情况下,RecyclerView将自己的尺寸设置为指定的尺寸。

NestedScrollView嵌套RecyclerView问题分析

否则,RecyclerView的最终尺寸必须在布局完成以后才能够确定

NestedScrollView嵌套RecyclerView问题分析

#setMeasuredDimensionFromChildren方法
NestedScrollView嵌套RecyclerView问题分析

#setMeasuredDimension方法

NestedScrollView嵌套RecyclerView问题分析
NestedScrollView嵌套RecyclerView问题分析

https://blog.csdn.net/fyfcauc/article/details/54291174

相关文章: