Как изменить цвет фона для MaterialCardView с помощью style.xml файл?

#android #android-theme

#Android #android-тема

Вопрос:

Я хочу изменить цвет фона для MaterialCardView с помощью style.xml файл. Это действительно помогло бы реализовать «Темный режим» в моем приложении для Android.

Я пробовал выполнять это динамически, но предпочел бы, чтобы это было сделано с помощью темы.

Ответ №1:

На самом деле, я заставил это работать, добавив атрибут

 app:cardBackgroundColor="@color/colorAccent"
  

Конечно, вы должны определить пространство имен приложения, которое выглядит следующим образом:

 xmlns:app="http://schemas.android.com/apk/res-auto"
  

Ответ №2:

Создайте свой собственный стиль для MaterialCardView, который расширяет виджет.Компоненты материала.CardView:

 <style name="YourCardView" parent="Widget.MaterialComponents.CardView">
    <item name="cardBackgroundColor">@color/your_color</item>
</style>
  

Затем вы можете вручную установить этот стиль для вашего отдельного MaterialCardView в формате xml:

 <com.google.android.material.card.MaterialCardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/YourCardView">
        <!-- card content -->
</com.google.android.material.card.MaterialCardView>
  

Или вы можете установить стиль для всех MaterialCardViews в вашей пользовательской теме (которая расширяет тему из MaterialComponents):

 <style name="YourTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="materialCardViewStyle">@style/YourCardView</item>
</style>
  

Комментарии:

1. Как насчет изменения цвета при нажатии на него?

Ответ №3:

Widget.MaterialComponents.CardView может быть оформлен точно так же, как любой другой компонент:

 <style name="CustomCardView" parent="Widget.MaterialComponents.CardView">
    <item name="cardBackgroundColor">?attr/colorSurface</item>
</style>
  

Изменение colorSurface значения по умолчанию на #FFFFFF может быть довольно эффективным для темной темы.

смотрите документацию, в которой также объясняется, как применить это ко всем экземплярам.