Réglage de l'élévation dans XML sur AppCompat CardView sur Android 5.0

D'après ce que je comprends, au début de l'étape de prévisualisation, il n'y avait aucun moyen d'établir une élévation en XML uniquement sur CardView s sans piratage en Java. Maintenant que la sortie officielle est sortie, y at-il un moyen de le faire en XML sans avoir écrit le code Java pour configurer l'élévation?

J'ai essayé card_view:cardElevation sans effet. J'avais pensé que lorsque j'utilisais les émulateurs pour 5.0 tout allait bien. Mais maintenant que j'utilise la version officielle sur mon appareil actuel, tous mes CardView disparu

Pre Lollipop, ça marche très bien.

Voici mon xml complet

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" android:layout_width="match_parent" android:id="@+id/cv1" card_view:cardElevation="4dp" android:layout_margin="6dp" card_view:cardCornerRadius="3dp" android:layout_height="match_parent"> 

  • Comment traduire imageView devant la carte? Lorsque les deux sont des enfants de Layout Relatif
  • Le changement d'altitude AppBarLayout est retardé sur appCompat v24.0.0
  • L'élévation d'appbarlayout Android s'affiche dans la barre d'état
  • Android: l'élévation n'a que des effets d'ombre sur le côté inférieur, comment faire apparaître les effets des ombres sur le côté supérieur?
  • "Android: elevation =" ne fonctionne pas sur les périphériques pré-Lollipop avec compilation API21
  • Élévation de Lollipop sur un contour concave
  • Android: l'élévation ne fonctionne pas en L Aperçu
  • Comment puis-je obtenir un élément ListView pour être élevé?
  • 3 Solutions collect form web for “Réglage de l'élévation dans XML sur AppCompat CardView sur Android 5.0”

    Il ressemble à un problème de marge / rembourrage, essayez de définir l'attribut cardUseCompatPadding sur true. Par exemple:

     <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="6dp" card_view:cardUseCompatPadding="true" card_view:cardElevation="4dp" card_view:cardCornerRadius="3dp"> 

    Explication de la documentation Android:

    CardView ajoute un rembourrage supplémentaire pour dessiner des ombres sur des plates-formes avant L.

    Cela peut entraîner des cartes de différentes tailles entre L et avant L. Si vous devez aligner CardView avec d'autres vues, vous pourriez avoir besoin de ressources de dimension spécifiques à la version d'api pour tenir compte des modifications. En variante, vous pouvez définir l'indicateur CardUseCompatPadding sur true et CardView ajoutera les mêmes valeurs de rembourrage sur les plates-formes L et après.

    Puisque la définition de l'indicateur cardUseCompatPadding à vrai ajoute des lacunes inutiles dans l'interface utilisateur, la valeur par défaut est fausse.

    Vous devez utiliser l'attribut cardElevation

     <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" card_view:cardElevation="4dp" /> 

    Si vous avez cette ligne

    Android: hardwareAccelerated = "false"

    Dans l'application manifeste, vos ombres n'ont pas été affichées. Essayez de

    Supprimer cette ligne

    ou

    Utiliser Android: hardwareAccelerated = "true"

    . Cela a fonctionné pour moi! J'espère qu'il fonctionnera pour vous aussi 🙂

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.