具有自适应ImageView尺寸的Android ConstraintLayout

时间:2018-11-12 06:49:49

标签: android layout

我有一个ConstraintLayout,它可以接受数量可变的ImageViews ...从1到12之间的任意位置。我希望ImageViews可以根据项目的数量来调整大小。例如。 1或2个项目的宽度:110高度:140,而当6个或更多项目的宽度:50高度:60。换句话说,所有项目都应放入约束区域,并相应地调整大小。

<android.support.constraint.ConstraintLayout
        android:id="@+id/ingredient_CL"
        android:layout_width="match_parent"
        android:layout_height="140dp"
        android:animateLayoutChanges="true"
        android:background="@drawable/item_border">

<ImageView
    android:id="@+id/ingredient_tool_0_iv"
    android:layout_width="110dp"
    android:layout_height="140dp"
    android:layout_marginStart="8dp" 
    android:scaleType="centerInside"
    android:visibility="@{step.quantity > 0 ? View.VISIBLE : View.GONE}" />

<ImageView
    android:id="@+id/ingredient_tool_1_iv"
    android:layout_width="110dp"
    android:layout_height="140dp"
    android:layout_marginStart="8dp"
    android:scaleType="centerInside"
    android:visibility="@{step.quantity > 1 ? View.VISIBLE : View.GONE}"/>

...

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果项的数量根据某些条件而有所不同,则可以使用“交错网格布局管理器”来实现所需的功能。

交错Grid View:基本上是Grid View的扩展,但是在这种情况下,每个Grid的大小(高度和宽度)都不同。交错网格视图在视图中显示不对称项。

RecyclerView支持 StaggeredGridLayoutManager

  

一个LayoutManager,用于在交错网格中布置子项   编队。它支持水平和垂直布局以及   可以反向排列子级。

请参阅下面的文档链接以更好地理解它。

https://developer.android.com/reference/android/support/v7/widget/StaggeredGridLayoutManager

Android - Difference between Gridlayout and Staggered Gridlayout