Widget.MaterialComponents.MaterialCardView не найден - PullRequest
0 голосов
/ 18 апреля 2020

https://material.io/develop/android/theming/shape/

Сайт описывает, как настроить MaterialCardView, но когда я выбираю Widget.MaterialComponents.MaterialCardView в качестве родителя в моем файле стиля, он не может быть найден.

Я пытался сделать это с помощью Widget.MaterialComponents.CardView, но у меня появился серый фон для моей карты. Я мог бы исправить серый фон с помощью app: cardForegroundColor, который отлично работает в большинстве случаев, но когда я использую MaterialCardView в некоторых особых случаях, таких как BottomSheet, встроенная анимация для автоматического углового перехода c снова делает серый фон видимый. Я в любом случае не доволен app: cardForegroundColor, потому что я думаю, что его нельзя использовать, когда это возможно.

enter image description here

В конце концов, я мог бы исправить все из проблем, выбрав родителя в качестве Theme.MaterialComponents, но я все еще хотел бы знать, что я сделал неправильно или как это на самом деле должно быть сделано.

Я использовал androidx и com.google. android .material: материал: 1.1.0

1 Ответ

0 голосов
/ 18 апреля 2020

Стиль: должен иметь в качестве родителя тему MaterialComponents, если вы используете AndroidX

 <style name="CardActivityTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorAccentX</item>
</style>

Чтобы создать красивую контурную карточку материала в стиле Google, создайте ее в своей деятельности XML layout:

<com.google.android.material.card.MaterialCardView
            android:id="@+id/card0"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardUseCompatPadding="true"
            app:cardBackgroundColor="#FFF"
            app:strokeWidth="1dp"
            app:strokeColor="DADCE0"
            app:cardElevation="0dp"
            app:cardCornerRadius="8dp">
</com.google.android.material.card.MaterialCardView>

Я сделал некоторые атрибуты жестко закодированными, чтобы дать вам непосредственно цвета.

Результат:

card

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

<com.google.android.material.card.MaterialCardView
            android:id="@+id/card0"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardUseCompatPadding="true"
            app:cardBackgroundColor="#FFF"
            app:cardElevation="1dp"
            app:cardCornerRadius="8dp">
</com.google.android.material.card.MaterialCardView>

Обратите внимание, что я удалил из предыдущего атрибуты app: strokeWidth и app: strokeColor .

Наконец, если вы хотите создать анимацию, как в опубликованном вами GIF, я настоятельно рекомендую использовать Motion Layout.

...