#android #android-cardview
Вопрос:
У меня есть вид переработчика, который подается с помощью card_view, у которого есть цветовая полоса (вид) на левом краю, которая должна занимать всю высоту карты.
Я попытался установить высоту цветового представления на значение match_parent, но если я сделаю это так, цвет никогда не появится. Если вместо этого я назначу номер высоте, то это сработает, но мне нужно, чтобы вид соответствовал высоте карты.
Вот XML-файл для карты, которая будет подавать представление переработчика:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingEnd="14dp"
>
<View
android:id="@ id/swatch"
android:layout_width="12dp"
android:layout_height="match_parent" />
<TextView
android:id="@ id/pathTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/swatch"
android:layout_marginStart="8dp"
android:layout_marginTop="14dp"
android:padding="2dp"
android:text="@string/placeholder_title"
android:textColor="@android:color/black"
android:textSize="14sp" />
<TextView
android:id="@ id/pathDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/pathTitle"
android:layout_toEndOf="@id/swatch"
android:layout_marginStart="8dp"
android:layout_marginBottom="14dp"
android:padding="2dp"
android:text="@string/placeholder_title"
android:textColor="@android:color/black"
android:textSize="14sp" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
Как я могу настроить вид «образец» в соответствии с высотой карты?
Комментарии:
1. Представления внутри ConstraintLayout не должны использовать match_parent в качестве ширины/высоты. Вместо этого используйте 0dp. Кроме того, лучше избегать использования RelativeLayout. ConstraintLayout может вместо этого обрабатывать макет и делать это более эффективно.
Ответ №1:
Надеюсь, это решит вашу проблему
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<View
android:id="@ id/swatch"
android:layout_width="12dp"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@ id/pathTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="14dp"
android:padding="2dp"
android:text="@string/placeholder_title"
android:textColor="@android:color/black"
android:textSize="14sp" />
<TextView
android:id="@ id/pathDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginBottom="14dp"
android:padding="2dp"
android:text="@string/placeholder_title"
android:textColor="@android:color/black"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>