D'après ce que j'ai compris, au début de la prévisualisation, il semblait impossible de définir l'élévation XML uniquement sur CardView
s sans piratage Java. Maintenant que la version officielle est sortie, y a-t-il un moyen de le faire en XML sans écrire de code Java pour définir l'altitude?
J'ai essayé card_view:cardElevation
sans effet. J'avais pensé que lorsque j'utilisais les émulateurs pour la version 5.0, tout allait bien. Mais maintenant que j'utilise la version officielle sur mon appareil actuel, tous mes CardView
s ont 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">
Cela ressemble à un problème de marge/remplissage, essayez de définir l'attribut cardUseCompatPadding à 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 du doc Android:
CardView ajoute un rembourrage supplémentaire pour dessiner des ombres sur les plates-formes avant L.
Cela peut entraîner des tailles de carte différentes entre L et avant L . Si vous devez aligner CardView avec d’autres vues, vous aurez peut-être besoin de api ressources de dimension spécifiques à la version pour prendre en compte les modifications. En tant que Une autre solution consiste à définir l'indicateur cardUseCompatPadding sur true et CardView ajoutera les mêmes valeurs de remplissage sur les plates-formes L et suivantes.
Étant donné que la définition de l'indicateur cardUseCompatPadding sur true ajoute des espaces inutiles dans l'interface utilisateur, la valeur par défaut est false.
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 la balise d'application manifeste, vos ombres n'étaient pas affichées. essayez de supprimer cette ligne
ou utiliser
Android:hardwareAccelerated="true"
Cela a fonctionné pour moi! J'espère que cela fonctionne pour vous aussi :)
Il m'a résolu en ajoutant
xmlns: card_view = "http://schemas.Android.com/apk/res-auto"
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="wrap_content"
Android:layout_marginTop="5dp"
Android:layout_marginLeft="5dp"
Android:layout_marginRight="5dp"
card_view:cardCornerRadius="5dp">
j'ajoute une application: cardElevation = "8dp" attribut sur la vue de la carte, donc ce sera comme:
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="160dp"
Android:layout_marginStart="16dp"
Android:layout_marginLeft="16dp"
Android:layout_marginTop="24dp"
Android:layout_marginEnd="16dp"
Android:layout_marginRight="16dp"
app:cardElevation="8dp"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView">
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:scaleType="centerCrop"
Android:src="@drawable/kmp_warna1" />
</Android.support.v7.widget.CardView>
J'espère que ça va aider