onCreateViewHolder中parent的width是RecyclerView、屏幕还是Item的宽度?
关于RecyclerView onCreateViewHolder中parent宽度的说明
直接给结论:onCreateViewHolder方法里的parent就是RecyclerView控件本身,所以它的宽度就是RecyclerView自身的宽度,既不是屏幕宽度,也不是单个Item的宽度。
具体解释:
parent参数的本质就是当前创建ViewHolder的RecyclerView实例,因为ViewHolder对应的ItemView最终会作为子View添加到这个RecyclerView中,所以这里获取到的宽度就是RecyclerView控件的实际显示宽度(包含自身的padding,但不包含margin)。- 屏幕宽度是设备整个显示区域的宽度,而RecyclerView可能被布局限制(比如嵌套在其他布局里只占屏幕一半,或者设置了固定宽度),这时候parent的宽度会明显小于屏幕宽度。
- 单个Item的宽度是由Item布局的参数、RecyclerView的LayoutManager(比如GridLayoutManager的列数、LinearLayoutManager的方向)共同决定的,和parent的宽度是不同概念。比如GridLayoutManager设置为2列,每个Item的宽度大概是(RecyclerView宽度 - 列间距)/2,和parent宽度直接相关但不是同一个值。
你自己测试得出的结论是正确的,比如可以做个简单验证:给RecyclerView设置固定宽度400dp,然后在onCreateViewHolder里打印parent.getWidth(),拿到的就是400dp对应的像素值,和RecyclerView的设置完全一致。
内容的提问来源于stack exchange,提问作者user16317578
相关产品推荐
相关产品推荐

