Android ImageButton avec un état sélectionné?
Si j'ai été en utilisant un ImageButton avec un sélecteur pour son fond, est-il un état je peux changer ce qui va la faire changer son apparence? Droit maintenant, je peux le faire pour changer les images lorsqu'il est pressé, mais il semble ne pas avoir "mis en évidence" ou de "sélection" ou similaire, état qui me permet de basculer son apparence à volonté.
Voici mon XML; il ne change d'apparence lorsqu'il est pressé.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/map_toolbar_details_selected" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/map_toolbar_details_selected" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/map_toolbar_details_selected" />
<item android:drawable="@drawable/map_toolbar_details" />
- À l'aide d'un ImageButton, et le suivi de l'état sélectionné semble un peu un hack. Vous devez utiliser un bouton à bascule, si vous voulez basculer la fonctionnalité.
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne pour moi:
Puis en java:
Pour une transition en douceur, vous pouvez également mentionner les temps d'animation:
NOTE: order is important (the first matching state(s) is what is rendered
cela n'a fonctionné, mais étrange, je comprenais pas POURQUOI?android:state_selected="false"
avec celui par défaut!ToggleImageButton
qui implémenteCheckable
interface et prend en chargeOnCheckedChangeListener
etandroid:checked
attribut xml:res/values/attrs.xml:
state_checked
ne fonctionne pas avec ce bien, vous devez utiliserstate_selected
.La meilleure façon de le faire sans plus d'images :
Essayez ceci:
Aussi pour les couleurs j'ai eu du succès avec
Créer un fichier XML dans un
res/drawable
dossier. Par exemple, "btn_image.xml":Vous pouvez combiner les fichiers que vous souhaitez, par exemple, le changement "bg_state_1" à "bg_state_deselected" et "bg_state_2" à "bg_state_selected".
Dans l'un de ces fichiers, vous pouvez écrire quelque chose comme:
Créer dans un fichier de mise en page d'une ImageView ou ImageButton avec les attributs suivants:
Plus tard dans le code: