CardView значение высоты по умолчанию - PullRequest
2 голосов
/ 09 марта 2020

Я пытаюсь показать значок (Pink TextView) на моем CardView, как показано ниже:

enter image description here

Значение высоты CardView не установлено, поэтому оно должно быть по умолчанию, а высота значка установлена ​​на 2dp.

С API Level > 22 проблем нет, но с API Level <= 22 значок остается под CardView, как показано ниже:

enter image description here

Когда я изменяю значение отметки на значке с 2dp на 2.285738dp, тогда это работает.

Моя первоначальная идея заключалась в том, что значение высоты по умолчанию для CardView изменяется в соответствии с уровнем API. Хотел написать здесь, чтобы узнать более логическую причину этого.

<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"
    android:clipToPadding="false"
    android:paddingBottom="8dp">

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="72dp"
    android:layout_marginStart="@dimen/margin_horizontal_default"
    android:layout_marginTop="@dimen/margin_inner_half_default"
    android:layout_marginEnd="@dimen/margin_horizontal_half_default"
    android:foreground="?android:attr/selectableItemBackground"
    app:cardBackgroundColor="?backgroundCardColor"
    app:cardCornerRadius="@dimen/card_corner_radius"
    app:layout_constraintTop_toTopOf="parent">

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

        <ImageView
            android:id="@+id/accountImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/margin_inner_default"
            android:src="@drawable/ic_account"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:orientation="vertical"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@+id/accountImage"
            app:layout_constraintTop_toTopOf="parent">

            <TextView
                android:id="@+id/accountIdText"
                style="@style/TextStyle.SemiBoldActiveMedium"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                tools:text="12058.01" />

            <TextView
                android:id="@+id/accountTypeText"
                style="@style/TextStyle.BoldSmallInactive"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                tools:text="Collection" />

        </LinearLayout>

        <TextView
            android:id="@+id/tvAmountView"
            style="@style/TextStyle.BoldPrime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="4dp"
            android:layout_marginBottom="1dp"
            android:textSize="15sp"
            app:layout_constraintBottom_toBottomOf="@id/ivChevron"
            app:layout_constraintEnd_toStartOf="@+id/tvAmountCurrency"
            app:layout_constraintTop_toTopOf="@id/ivChevron"
            tools:text="13,592.04" />

        <TextView
            android:id="@+id/tvAmountCurrency"
            style="@style/TextStyle.BoldSmallInactive"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginEnd="4dp"
            app:layout_constraintBottom_toBottomOf="@id/ivChevron"
            app:layout_constraintEnd_toStartOf="@id/ivChevron"
            app:layout_constraintTop_toTopOf="@id/ivChevron"
            tools:text="KES" />

        <ImageView
            android:id="@+id/ivChevron"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="@dimen/margin_inner_default"
            android:src="@drawable/ic_chevron_right"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.cardview.widget.CardView>

<TextView
    android:id="@+id/accountCurrencyText"
    style="@style/TextStyle.InvertedTag"
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:layout_marginStart="@dimen/margin_horizontal_half_default"
    android:background="@drawable/background_inverted_secondary"
    android:elevation="2dp"
    android:gravity="center_vertical"
    android:paddingStart="12dp"
    android:paddingEnd="12dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:text="KES" />

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

У меня была эта проблема раньше, и я исправил ее, установив elevation для обоих из двух элементов: в фоновом режиме я установил 2sp, а для элемента на переднем плане - 4sp. и работает отлично. Значение по умолчанию для CardView: 2dp.

0 голосов
/ 09 марта 2020

Пожалуйста, попробуйте заменить TextView на androidx.TextView и посмотрите, работает ли он.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...