2010-07-29 21 views
2

J'ai créé une vue personnalisée qui est essentiellement un objet Gallery pouvant être masqué et affiché (en utilisant View.VISIBLE et View.GONE) en cliquant sur un TextView.Afficher l'état perdu avec le clic

Les images que je place dans cette galerie ont un sélecteur StateListDrawable personnalisé en arrière-plan. Tout fonctionne bien, sauf que l'état des images dans la galerie semble se perdre lorsque la galerie passe de View.GONE à View.VISIBLE, et que le sélecteur dessiné est le drawable par défaut (translucent_box).

Ce sont les éléments dans mon XML de sélection:

 
<item android:drawable="@drawable/red_box" android:state_pressed="true" /> 
<item android:drawable="@drawable/orange_box" android:state_selected="true" android:state_focused="true" /> 
<item android:drawable="@drawable/blue_box" android:state_selected="true" /> 
<item android:drawable="@drawable/translucent_box" /> 

La chose la plus étrange est que, après le retour d'un appel à startActivity, l'état se rétablit et tout indique bien jusqu'à ce que je me cache et montre la galerie à nouveau.

J'ai essayé de jouer en ajoutant différents états dans le sélecteur et en essayant par programme d'actualiser la vue ... en vain.

Des idées? Je suis sûr que cela doit être quelque chose de trivial ...

Merci d'avance!

+0

Vous ne pouvez pas obtenir la vue focalisée/sélectionnée lorsque votre widget est visible, l'enregistrer et la réappliquer lorsque vous revenez à l'état visible? – Sephy

+0

J'avais joué avec essayer de le faire mais en vain ... d'où la raison de la question. Aussi, d'après ce que j'ai pu dire, il y a un moyen de définir l'état sélectionné mais pas l'état focalisé ... – Justin

Répondre

0

J'ai été en mesure de trouver une solution de contournement pour mon cas. Je ne suis pas sûr que ce soit la meilleure façon et je ne sais toujours pas ce qui cause le comportement, mais j'ai été capable d'obtenir ce que je voulais en appelant notifyDataSetChanged() sur l'adaptateur de ma galerie.

Si quelqu'un a une meilleure suggestion sur la façon de résoudre le problème (le mien semble être un peu exagéré) ou même une description de pourquoi cela se produit, je l'apprécierais ... Je suis très curieux de savoir ce que se passe dans les coulisses.

0

Je ne suis pas sûr que ce soit pertinent - mais avez-vous besoin d'implémenter View.verifyDrawable? Les documents ne sont pas très clairs quant au moment où vous devez faire cela. StartActivity déclenchera une animation par défaut - ce qui est probablement ce qui oblige la vue à s'actualiser correctement. Un autre hack possible autour de ceci serait de déclencher une sorte d'animation vide.

+0

Merci pour la suggestion, mais après avoir passé outre cette méthode, j'ai traversé le débogueur et cette méthode n'a jamais été appelée. – Justin