J'ai un imagebutton qui ne répond pas par une animation tactile lorsque l'utilisateur clique dessus, car il s'agit d'une image statique, contrairement aux boutons normaux de Lollipop, qui sont livrés avec l'effet d'entraînement intégré. J'aimerais ajouter l'effet tactile de conception matérielle à l'image, mais je n'arrive pas à trouver le moyen de le mettre en œuvre. Je peux définir un filtre de couleur sur l'image, mais ce n'est pas l'effet d'entraînement. Un exemple de ce que j'essaie de faire est lorsque vous maintenez une image de couverture d'album dans Google Play Musique et qu'une ondulation d'ombre se déplace sur l'image.
Pour un résultat encore meilleur:
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@Android:drawable/ic_button"
Android:background="?attr/selectableItemBackgroundBorderless"
/>
Vous pouvez simplement ajouter un arrière-plan à votre ImageButton comme ceci:
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@Android:drawable/btn_dialog"
Android:background="?android:attr/selectableItemBackground" />
I.shadrin ( ici ) et Nicolars ( ici ) m'ont donné de bonnes réponses.
La différence entre leurs réponses est que ?attr/selectableItemBackgroundBorderless
peut vous donner un Android.view.InflateException
, alors le ?android:attr/selectableItemBackground
est la solution.
FWIW, je ne sais pas pourquoi cette exception se produit, car la première réponse a bien fonctionné dans tous mes anciens projets, mais pas dans mon projet récent (peut-être parce que l’application theme = Android:Theme.Material
?.
La chose étrange qui se passait est que, bien que l'effet d'entraînement ait été démontré, il dépassait le ImageButton. La solution est donc la suivante:
Android:foreground="?android:attr/selectableItemBackgroundBorderless"
au lieu de Android:background="?android:attr/selectableItemBackgroundBorderless"
J'espère que cela vous aidera si vous faites face à la même chose.