开发司机经验增加图片信息需求时,在编辑界面增加了NestedScrollView,(NestedScrollView嵌套图片上传组件,组件继承RecyclerView)会将RecyclerView中的列表全部展开出来。
第一张图增加NestedScrollView后是全部展开的;第二幅图没加,在有限的地方展示图片。
直观来看,给人的感觉就是一个没有限制高度,一个限制高度。
再结合RecyclerView的定义:
官方意思就是,在有限的窗口展示大量数据,再看之前写的代码,“layout_height”设置的是“wrap_content”。
那么现在我修改“layout_height”为固定值“300dp”,效果如下图。RecyclerView里的数据就没有全部展开。
那么为什么会出现这个情况呢?
View测量流程:
在ViewGroup测量时,他还需要测量child。
在NestedScrollView里的measureChild方法中,使用的是UNSPECIFIED。
在RecyclerView中
#onMeasure()方法
ParentView已经给RecyclerView指定了具体的尺寸,这种情况下,RecyclerView将自己的尺寸设置为指定的尺寸。
否则,RecyclerView的最终尺寸必须在布局完成以后才能够确定
#setMeasuredDimensionFromChildren方法
#setMeasuredDimension方法
https://blog.csdn.net/fyfcauc/article/details/54291174