Effet d’ondulation sur un élément RecyclerView contenant ImageView

J’ai un RecyclerView qui étend l’élément de grid suivant:

    ..............   

Mais l’effet d’entraînement ne s’affiche pas à moins que je ne SquareImageView's visibilité SquareImageView's sur invisible. Il semble que l’effet d’entraînement soit dessiné sous SquareImageView . Comment puis-je le faire dessiner sur le SquareImageView ?

append le code ci-dessous à la disposition de votre parent

 android:clickable="true" android:focusable="true" android:background="?attr/selectableItemBackground" 

si vous voulez un effet d’ondulation personnalisé, ajoutez ce fichier ripple_custom.xml dans votre drawable-v21

     

pour prendre en charge l’ancienne version, ajoutez ripple_custom.xml dans drawable

              

Changement:

 android:background="?selectableItemBackground" 

À:

 android:background="?android:attr/selectableItemBackground" 

Et ajoutez ceci à votre SquareImageView

 android:clickable="false" 

Nous pouvons envelopper Item RecyclerView dans FrameLayout et définir android:foreground propriété de android:foreground . Commander le lien suivant pour plus de détails. Ça marche plutôt bien pour moi.

Votre SquareImageView remplit l’intégralité de l’espace ( width est match_parent et height est wrap_content ) et donc SquareImageView reçoit l’événement click.

Ce qui a fonctionné dans mon cas a été de définir l’état cliquable de tous les objects de votre RelativeLayout sur false:

 android:clickable="false" 

Assurez-vous simplement que votre RelativeLayout gère l’événement click dans votre activité. Dans mon code, je mets le RelativeLayout en view v et définit un onClick Listener sur celui-ci pour gérer le CheckBox dans mon élément List.

 v.setOnClickListener(this); 

Espérons que cela aide quiconque le lit.

Si vous avez un CardView + ImageView
insérez simplement dans CardView

 android:focusable="true" android:foreground="?android:attr/selectableItemBackground" 

Et pour RelativeLayout + ImageView
Insérer dans RelativeLayout

 android:clickable="true" android:focusable="true" android:background="?attr/selectableItemBackground" 

Ou

 android:focusable="true" android:background="?attr/selectableItemBackground" 

Ce code a fonctionné pour moi