J'ai un bouton d'image qui ne répond pas avec une animation tactile lorsque vous cliquez dessus, car il s'agit d'une image statique contrairement aux boutons normaux de la sucette qui sont livrés avec l'effet d'entraînement intégré. Je voudrais ajouter l'effet tactile d'ondulation de conception matérielle à l'image, mais je n'arrive pas à trouver un moyen de l'implémenter. 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 tenez une image de couverture d'album dans Google Play Musique et qu'une ondulation d'ombre se déplace sur l'image.
95
android:theme="@style/Base.ThemeOverlay.AppCompat.Dark"
(fonctionne sur <API 21). Voir stackoverflow.com/q/28605031/599535 pour d'autres solutions.Vous pouvez simplement ajouter un arrière-plan à votre ImageButton comme ceci:
la source
J'ai eu de bonnes réponses de i.shadrin ( ici ) et de Nicolars ( ici ).
La différence entre leurs réponses est que cela
?attr/selectableItemBackgroundBorderless
peut vous donner unandroid.view.InflateException
, alors?android:attr/selectableItemBackground
c'est la solution.FWIW, je ne sais pas pourquoi l'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 le thème de l'application =
android:Theme.Material
?).La chose étrange qui se passait est que bien que l'effet d'entraînement ait été montré, il dépassait le ImageButton, donc la solution est:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
lieu deandroid:background="?android:attr/selectableItemBackgroundBorderless"
J'espère que cela vous aidera si vous faites face à la même chose.
la source
Si vous avez déjà un arrière-plan et que vous ne souhaitez pas le modifier, utilisez le premier plan;
la source