J'essaie d'obtenir un CardView pour afficher l'effet d'entraînement lorsqu'il est touché en définissant l'attribut android: backgound dans le fichier XML d'activité comme décrit ici sur la page Développeurs Android, mais cela ne fonctionne pas. Aucune animation, mais la méthode dans onClick est appelée. J'ai également essayé de créer un fichier ripple.xml comme suggéré ici , mais le même résultat.
Le CardView tel qu'il apparaît dans le fichier XML de l'activité:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="155dp"
android:layout_height="230dp"
android:elevation="4dp"
android:translationZ="5dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:onClick="showNotices"
android:background="?android:attr/selectableItemBackground"
android:id="@+id/notices_card"
card_view:cardCornerRadius="2dp">
</android.support.v7.widget.CardView>
Je suis relativement nouveau dans le développement Android, donc j'ai peut-être fait quelques erreurs évidentes.
android
android-layout
android-5.0-lollipop
android-cardview
AkraticCritic
la source
la source
?android:attr/selectableItemBackground
nécessite le niveau d'API 11android:clickable="true"
.Ajoutez ces deux codes de ligne dans votre vue xml pour donner un effet d'entraînement sur votre cardView.
la source
foreground
fonctionne avec des vues d'arrière-plan personnalisées comme un charme! Agréable!J'ai réussi à obtenir l'effet d'entraînement sur la vue de la carte en:
et pour le custom_bg que vous pouvez voir dans le code ci-dessus, vous devez définir un fichier xml pour les périphériques lollipop (dans le package drawable-v21) et pré-lollipop (dans le package drawable). pour custom_bg dans le package drawable-v21, le code est:
pour custom_bg dans le package drawable, le code est:
Ainsi, sur les appareils pré-lollipop, vous aurez un effet de clic solide et sur les appareils sucette, vous aurez un effet d'entraînement sur la vue de la carte.
la source
L'effet d'entraînement a été omis dans la bibliothèque de support appcompat qui est ce que vous utilisez. Si vous voulez voir l'ondulation, utilisez la version Android L et testez-la sur un appareil Android L. Sur le site AppCompat v7:
"Pourquoi n'y a-t-il pas d'ondulations sur les versions antérieures à Lollipop? Le nouveau RenderThread d'Android 5.0 est en grande partie ce qui permet à RippleDrawable de fonctionner correctement. Pour optimiser les performances des versions précédentes d'Android, nous avons laissé RippleDrawable pour le moment."
Consultez ce lien ici pour plus d'informations
la source
Si l'application sur
minSdkVersion
laquelle vous travaillez est de niveau 9, vous pouvez utiliser:Au lieu de cela, à partir du niveau 11, vous utilisez:
De la documentation:
la source
Pour moi, l'ajout de
foreground
àCardView
n'a pas fonctionné (raison inconnue: /)L'ajout de la même chose à sa disposition enfant a fait l'affaire.
CODE:
la source
Ajoutez ces deux types de code fonctionnent comme un charme pour n'importe quelle vue comme Button, Linear Layout ou CardView.Il suffit de mettre ces deux lignes et de voir la magie ...
la source
S'il existe une disposition racine telle que RelativeLayout ou LinearLayout qui contient tous les composants de l'élément adaptateur dans CardView, vous devez définir l'attribut d'arrière-plan dans cette disposition racine. comme:
la source
Événement Ripple pour le
Cardview
contrôle Android :la source
Je n'étais pas satisfait d'AppCompat, j'ai donc écrit mon propre CardView et des ondulations rétroportées. Ici, il fonctionne sur Galaxy S avec Gingerbread, donc c'est certainement possible.
Pour plus de détails, vérifiez le code source .
la source
Ajoutez ce qui suit à votre xml:
Et ajoutez à votre adaptateur (si c'est votre cas)
la source
Pour ceux qui recherchent une solution au problème de l'effet d'entraînement ne fonctionnant pas sur un CardView créé par programme (ou dans mon cas une vue personnalisée qui étend CardView) affiché dans un RecyclerView, ce qui suit a fonctionné pour moi. En gros, déclarer les attributs XML mentionnés dans les autres réponses de manière déclarative dans le fichier de mise en page XML ne semble pas fonctionner pour un CardView créé par programme, ou créé à partir d'une mise en page personnalisée (même si la vue racine est CardView ou si un élément de fusion est utilisé), donc ils doivent être définis par programme comme ceci:
Où
MadeupCardView extends CardView
Bravo à cette réponse pour laTypedArray
partie.la source
Ne fonctionne que l'API 21 et ne l'utilise pas utilise cette vue de carte de ligne de liste
la source
Utilisez à la place Material Cardview, il étend Cardview et fournit plusieurs nouvelles fonctionnalités, y compris l'effet cliquable par défaut:
Dépendance
la source