Je souhaite modifier la couleur d'arrière-plan de MaterialCardView à l'aide du fichier style.xml. Cela aiderait vraiment à implémenter le "mode sombre" dans mon application Android.
J'ai essayé de le faire de manière dynamique, mais je préférerais que cela soit fait en utilisant le thème.
3 Réponses :
Widget.MaterialComponents.CardView
peut être stylé comme n'importe quel autre composant:
<style name="CustomCardView" parent="Widget.MaterialComponents.CardView"> <item name="cardBackgroundColor">?attr/colorSurface</item> </style>
Changer colorSurface
, qui est par défaut #FFFFFF
, peut être plutôt efficace pour un thème sombre.
consultez la documentation , qui explique également comment l'appliquer à toutes les instances.
Créez votre style personnalisé pour MaterialCardView qui étend Widget.MaterialComponents.CardView:
<style name="YourTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="materialCardViewStyle">@style/YourCardView</item> </style>
Ensuite, vous pouvez définir ce style manuellement sur votre unique MaterialCardView au format 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>
Ou vous pouvez définir le style de tous les MaterialCardViews dans votre thème personnalisé (qui étend un thème de MaterialComponents):
<style name="YourCardView" parent="Widget.MaterialComponents.CardView"> <item name="cardBackgroundColor">@color/your_color</item> </style>
Qu'en est-il de changer la couleur du clic dessus?
En fait, je l'ai fait fonctionner en ajoutant l'attribut
xmlns:app="http://schemas.android.com/apk/res-auto"
Bien sûr, vous devez définir l'espace de noms de l'application, qui se déroule comme suit:
app:cardBackgroundColor="@color/colorAccent"