【发布时间】:2021-04-28 17:30:51
【问题描述】:
在 recyclerview 的约束布局中,我使用不可见的 imageview 作为 sizer 对象,我将其他视图约束到该对象。这个想法是,通过调整 imageview 的大小,我将调整整个 recyclerview 项目的大小。
图像视图的 XML 是:
<ImageView
android:id="@+id/ivSizer"
android:layout_width="100dp"
android:layout_height="100dp"
android:visibility="invisible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
然后,在我的 onBindViewHolder 中,我尝试使用 sizer 视图的 ScaleX 和 ScaleY 属性来调整大小:
holder.itemView.ivSizer.scaleX = scale
holder.itemView.ivSizer.scaleY = scale
这会产生一个运行时错误(比例变量是浮点类型):
java.lang.IllegalArgumentException: Cannot set 'scaleX' to Float.NaN
我不明白为什么这不起作用。我会以错误的方式解决这个问题吗?我想要调整大小的原因是我可以更改网格布局管理器中的列数,并且想要缩放项目以效仿。
【问题讨论】:
-
此时
scale是什么? -
比例变量的值是多少?
-
val scale: Float = width.toFloat() / columns.toFloat() / holder.itemView.ivSizer.width.toFloat(),其中width为recyclerview的宽度(约1000),columns为recyclerview的列数(从1到5),Sizer的宽度为100,所以实际上 scale 是一个值在 2 到 10 之间的浮点数,或多或少...
标签: android android-recyclerview