#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
может быть довольно эффективным для темной темы.
смотрите документацию, в которой также объясняется, как применить это ко всем экземплярам.