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"