Android, setSelected () et state_selected
Je vais avoir des ennuis avec View.setSelected()
. Views
sont marqués de l'icône sélectionnée -- TextViews
par exemple, de changer leur couleur de police -- mais mon fond de sélecteurs ne semblent pas à enregistrer le changement.
Exemple sélecteur:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/transparent" />
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="#ff8600" />
</shape>
</item>
</selector>
Je ne suis même pas sûr de la nature des informations de contexte serait utile. Les vues sont des enfants d'un LinearLayout, et je suis par programmation réglage de l'état sélectionné à l'intérieur d'un événement tactile. Comme je l'ai dit, il ne l'air de fonctionner, étant donné que la police la couleur va du blanc au gris, mais le fond reste le même.
Modifier: j'ai vérifié pour les erreurs stupides avant de poster :P. La réponse n'est pas "ajouter de l'android:attribut background".
source d'informationauteur slezica
Vous devez vous connecter pour publier un commentaire.
Les éléments dans l'ordre des questions dans le sélecteur xmls, la valeur par défaut de l'élément doit toujours être en bas dans la liste des éléments.
non seulement l'état sélectionné l'ordre est important, même l'ordre de tous les etats membres est important. Dans mon cas, j'ai ajouté
state_pressed
en tant que premier et monstate_selected
ne marche pas. Alors, j'ai changé l'ordre comme cela, et puis il a travaillé:MODIFIER
J'ai fait face également le problème, si j'appuie sur le bouton, il sera dans l'état, mais pas pressé d'état. Donc, la solution doit être, à l'ordre les etats comme ça et de plus, c'est une bonne pratique pour ajouter un bouton par défaut look:
Tout d'abord, définissez l'état sélectionné et après cela, le même que l'état activé en alternance. (Pour l'instant, stackoverflow n'est pas à montrer mes modifier complètement, je ne sais pas pourquoi, juste être patient, s'il vous plaît).
Il n'est pas évident, mais je pense que cela peut fonctionner (remarquer l'ajout de state_selected="false"):
J'espère que c'est utile.