在 ConstraintLayout android 中填充水平宽度的最佳实践

Best practice to fill horizontal width in ConstraintLayout android

我需要做这个设计

通常我使用 LinearLayout 创建此类设计,但在这种情况下它是一个列表项,所以我不想使用嵌套的 linearLayouts。

我想一次性完成这个设计ConstraintLayout。但是我无法找到任何解决方案,我可以将大部分水平 space 提供给 ProductTitle,并将一些宽度提供给图像和库存按钮。

我知道我们在 LinearLayout 中提供权重,但我如何在 ConstraintLayout 中以 if text is long enough then it should not override/misplace the stock button

的方式实现这一点

任何帮助将不胜感激

将宽度设置为 0dp 并在两侧对其进行约束

<Imageview app:layout_constraintStart_toStartOf="parent" />
<TextView
    android:layout_width="0dp"
    app:layout_constraintEnd_toStartOf="@+id/switch"
    app:layout_constraintStart_toEndOf="@+id/image" />
<Switch app:layout_constraintEnd_toEndOf="parent" />

如果我正确理解你的问题,你想要实现的是这样的

example image

代码如下:

<ImageView
    android:id="@+id/image1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_close_dark_grey"
    android:layout_marginStart="50dp"
    android:layout_marginTop="50dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse pretium, velit egestas fringilla congue, magna massa fringilla metus, nec fermentum nunc justo quis arcu. Aliquam erat volutpat"
    app:layout_constraintStart_toEndOf="@id/image1"
    app:layout_constraintEnd_toStartOf="@id/image2"
    app:layout_constraintTop_toTopOf="parent" />

<ImageView
    android:id="@+id/image2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_close_dark_grey"
    android:layout_marginEnd="50dp"
    android:layout_marginTop="50dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

但是你想打破这条线并显示点。这非常简单:只需将这两个属性添加到 TextView

android:lines="1"
android:ellipsize="end"

这样你说的是只显示一行,而省略号是用来显示点和分隔文本的。