Непоследовательная тень на MaterialCardView, когда она накладывается дочерними элементами

#android #android-layout #material-components-android

#Android #android-макет #материал-компоненты-android

Вопрос:

Когда дочерний элемент MaterialCardView полностью перекрывает его, тень под ним исчезает. Я попытался установить высоту для самого представления, но безрезультатно.

Пример компоновки:

 <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- Elevation of this card is large for demonstration purposes -->
    <com.google.android.material.card.MaterialCardView
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:layout_margin="16dp"
        app:cardElevation="24dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <View
            android:layout_width="120dp"
            android:layout_height="match_parent"
            android:background="@color/purple_500"
            android:elevation="24dp"
            app:elevation="24dp" />
    </com.google.android.material.card.MaterialCardView>

</androidx.constraintlayout.widget.ConstraintLayout>
 

Скриншот проблемы:

Тень хорошо видна на белом фоне карты, но не на фиолетовом

Здесь тень хорошо видна на белом фоне карты, но не на фиолетовом.

Приложение было протестировано на эмуляторе API 30, но я наблюдал аналогичное поведение на физическом устройстве API 29.

Ответ №1:

Хорошо, оказывается, это была просто оптическая иллюзия: если вы наложите фиолетовый элемент управления в Paint, тень будет последовательной:

введите описание изображения здесь

Теперь мне решать, как предотвратить влияние следующей иллюзии на визуальное восприятие моего приложения.