2009-10-15 6 views
3

j'ai cette disposition personnalisée:Android: changement de style quand concentré

- LinearLayout 
    - FrameLayout 
     - ImageView 
    - TextView 

Cette disposition réagit à cliquer sur les événements (en utilisant LinearLayout.setOnClickListener()) et en utilisant focusable android:focusable="true" dans le fichier XML de mise en page. Tout fonctionne bien si vous utilisez l'écran tactile, mais je pense à des utilisateurs qui n'utilisent pas beaucoup l'écran tactile et préfèrent les touches de navigation ou peut-être même n'ont pas d'écran tactile. Ces utilisateurs ne pourront pas voir quand ce ViewGroup est focalisé (bien que peut être focalisé en utilisant le clavier).

Ma question est: comment puis-je faire un changement dans cette mise en page quand il est concentré (je dois changer le android:background du ImageView)? Je suppose que je pourrais utiliser LinearLayout.setOnFocusChangeListener(), mais je pense que peut-être il y a un meilleur moyen, en utilisant seulement des fichiers XML.

Répondre

6

Donne quelque chose (LinearLayout?) Une image d'arrière-plan StateListDrawable (XML dessinable avec élément racine <selector>). Peut-être utiliser simplement une couleur transparente pour le cas normal, mais utiliser autre chose pour le cas android:focused="true". Puis, quand il obtient le focus, l'arrière-plan va changer automatiquement.

+0

Je faisais des recherches et je suis tombé sur StateListDrawable moi-même. Bien qu'il fasse à peu près ce que je veux, ce n'est pas vraiment parfait. Je veux changer l'arrière-plan de l'ImageView quand le LinearLayout est concentré, et je ne peux pas faire cela avec StateListDrawable. +1 cependant, pour pointer cette classe très utile! – Felix

+0

En outre, où puis-je définir les StateListDrawables? Est-ce que je crée des fichiers XML dans le répertoire drawable /? – Felix

Questions connexes