Тень Cardview выглядит иначе, когда внутри ScrollView - PullRequest
1 голос
/ 25 марта 2019

Я наткнулся на что-то странное. Я использую один и тот же компонент CardView в нескольких местах моего приложения, все с одинаковой высотой (3dp), и все они выглядят одинаково. Однако для одного сценария мне нужно встроить CardView в ScrollView. Я ничего не изменил в конфигурации CardView, но тень теперь выглядит иначе.

Это мой макет:

<ScrollView 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="match_parent"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:padding="16dp"
            android:scrollbars="none">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipChildren="false"
        android:clipToPadding="false"
        app:cardCornerRadius="8dp"
        app:cardElevation="3dp"
        app:cardUseCompatPadding="true">

        <!-- some other views-->

     </androidx.cardview.widget.CardView>
</ScrollView>

На рисунке ниже вы видите справа CardView и слева две тени: сверху тень, генерируемая одним CardView, снизу - тень, генерируемая, когда CardView внутри ScrollView. Как вы можете видеть, второй кажется темнее и толще.

ПРИМЕЧАНИЕ. Цвет фона (#FAFAFA) одинаков в обоих сценариях.

enter image description here

1 Ответ

0 голосов
/ 25 марта 2019

В обоих случаях я бы проверил следующие свойства, так как это могло бы помочь увидеть разницу, которую вы видите:

  • getTranslationZ()
  • getElevation()
  • getOutlineAmbientShadowColor() (это действительно только в API 28 +)
  • getOutlineSpotShadowColor() (это действительно только в API 28 +)

Плюс, проверка инспектора макета на предмет наличия каких-либо представлений, которые могут повлиять на рендеринг.

Также, эта статья от Себастьяно Поджи могла бы помочь.

...