Android — Не удается установить вид на соответствующую прозрачную высоту внутри карты для просмотра переработчика

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