Мне нужно сделать этот дизайн введите описание изображения здесь

Обычно я создаю такие проекты, используя LinearLayout, но в данном случае это элемент списка, поэтому я не хочу использовать вложенные linearLayouts.

Я хочу создать этот дизайн за один ConstraintLayout. Но я не могу найти никакого решения, в котором я смогу выделить большую часть горизонтального пространства для ProductTitle и некоторую ширину для изображения и стандартной кнопки.

Я знаю, что мы предоставляем веса в LinearLayout, но как я могу добиться этого в ConstraintLayout таким образом, чтобы if text is long enough then it should not override/misplace the stock button

Любая помощь будет высоко оценена

-1
Zohab Ali 15 Янв 2021 в 22:20

2 ответа

Лучший ответ

Если я правильно понимаю вашу проблему, вы хотите достичь чего-то вроде этого

пример изображения

Код следующий:

<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"

Таким образом, вы говорите, что нужно показать только одну строку, а многоточие используется для отображения точек и разрыва текста.

1
Andrea Guadagni 15 Янв 2021 в 19:45

Установите ширину на 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" />
0
Sinner of the System 15 Янв 2021 в 19:44
65742347