【问题标题】:Resizing Android recycler items调整 Android 回收站项目的大小
【发布时间】: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


【解决方案1】:

糟糕...我发现 recyclerview 的宽度是 0 - 所以比例是 0。

这解释了错误;我无法将 ScaleX 和 ScalY 设置为 0 :-p

现在,为什么 recyclerWidth = rvFolderList.width 会返回 0,即使在我设置了布局管理器和适配器之后也是一个难题(对我来说) - 但这是另一回事 :-)

谢谢你回答我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 2023-02-03
    • 2023-03-27
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多