Я пытаюсь создать двухстрочный 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, так что это может быть что-то легкое.
Есть много разных способов добиться этого, один из них — вставить текст в изображение и придать им одинаковую высоту.
Они не будут перекрывать друг друга, если вы сделаете что-то вроде этого:
В вашем примере вы использовали 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>
Это идеально. Спасибо!