gpt4 book ai didi

android - 如何获取 "onBindViewHolder"中recyclerview项目的高度

转载 作者:IT老高 更新时间:2023-10-28 23:28:39 33 4
gpt4 key购买 nike

RecyclerView 项目的高度不固定,我需要为每个项目设置背景图片,所以我想获取 recyclerview 项目的高度来调整图像的大小,但是 itemView.getHeight()onBindViewHolder 中总是返回 0。

我已经尝试搜索了很多问题或文章,但我仍然无法找到一个好的解决方案。

最佳答案

手动测量 View

view.measure(
View.MeasureSpec.makeMeasureSpec(recyclerViewWidth, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

并使用 view.getMeasuredHeight()

获取高度

背景

只有在测量之后, View 才会返回 View.getHeight() 的有效值。当 View 即将显示在屏幕上时,系统会自动进行测量。

当Android想要显示布局时,它会为 View 树中的每个 View 递归调用view.layout()函数。每个 Parent 告诉它的 child 他们可能有的约束(宽度/高度)并要求他们自己view.measure()。因此, View 将BASED 存储指定成员(MeasuredHeight/Width)中约束的测量值。请注意,此时 view.getMeasuredHeight() 将保留该值,而 view.getHeight() 仍然无效。 view.getHeight() 仅当 View 在 UI 层次结构中具有实际高度时才会返回有效值。

回顾

因此,要知道 View 元素的高度,在系统测量和布局之前,我们需要手动调用 view.measure() 函数。

measure 函数需要 2 个参数,这些参数来自 View LayoutParams + 父约束。

在上面的代码示例中,我们正在测量 View ,强制其宽度完全等于父级(RecycleView)的宽度,并且高度不受限制。

关于android - 如何获取 "onBindViewHolder"中recyclerview项目的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38764254/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com