5
votes

Comment changer la couleur d'arrière-plan de MaterialCardView à l'aide du fichier style.xml?

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.


0 commentaires

3 Réponses :


5
votes

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.


0 commentaires

10
votes

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>


1 commentaires

Qu'en est-il de changer la couleur du clic dessus?



0
votes

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"


0 commentaires