Две строки ConstraintLayout

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

Две строки ConstraintLayout

Это код, который я использую:

<?xml version = "1.0" encoding = "utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:layout_gravity = "center"
    android:padding = "5dp"
    android:orientation = "horizontal">

    <TextView
        android:id = "@+id/title"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        app:layout_constraintTop_toTopOf = "parent"
        />

    <ImageView
        android:id = "@+id/download"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        app:layout_constraintTop_toTopOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        android:paddingStart = "5dp"
        android:paddingTop = "5dp"
        android:paddingBottom = "5dp"
        />

    <TextView
        android:id = "@+id/date"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:textSize = "13sp"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/title"
        android:layout_marginTop = "4dp"
        />

    <TextView
        android:id = "@+id/duration"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:textSize = "13sp"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/title"
        android:layout_marginTop = "4dp"
        />

</androidx.constraintlayout.widget.ConstraintLayout>

Я хотел бы, чтобы левые просмотры (название, дата) останавливались там, где начинается загрузка изображения и продолжительность. Я мало работал с ConstraintLayouts, так что это может быть что-то легкое.

2
0
288
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть много разных способов добиться этого, один из них — вставить текст в изображение и придать им одинаковую высоту.

Они не будут перекрывать друг друга, если вы сделаете что-то вроде этого:

В вашем примере вы использовали android:layout_width = "match_parent" в тексте, поэтому он был расширен на всю строку и перекрывал ваш другой вид.
Вы должны использовать android:layout_width = "0dp" (это match_constraint), чтобы ваши представления не перекрывали друг друга.

Вот пример макета, который выглядит как строка, которую вы хотите получить:

 <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent">


    <TextView
        android:id = "@+id/textView4"
        android:layout_width = "0dp"
        android:layout_height = "wrap_content"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginBottom = "8dp"
        android:text = "loot at this text that wont everlap the image"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toStartOf = "@+id/imageView"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent" />

    <ImageView
        android:id = "@+id/imageView"
        android:layout_width = "wrap_content"
        android:layout_height = "0dp"
        android:layout_marginEnd = "8dp"
        app:layout_constraintBottom_toBottomOf = "@+id/textView4"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintTop_toTopOf = "@+id/textView4"
        tools:src = "@tools:sample/avatars[1]" />
</androidx.constraintlayout.widget.ConstraintLayout>

Это идеально. Спасибо!

Kris B 24.03.2019 00:01

Другие вопросы по теме