2010-03-30 10 views
0

Je suis nouveau sur Android et je commence juste les bases. J'implémente mon habillage de bouton personnalisé en utilisant les images .9.png pour les états norma/focus/pressés. Cela fonctionne bien, mais j'ai remarqué qu'après avoir appuyé sur le bouton focalisé, il a visuellement perdu le focus et dessine le cadre d'état normal. J'ai projeté d'utiliser différentes images d'état pour faire un hyperloght quel bouton est sélectionné en ce moment, mais il semble que cela ne fonctionnerait pas. J'ai également remarqué que la même chose se produit avec le bouton LAF par défaut. Est-ce OK, ou c'est juste un problème d'émulateur? Quel est le bon workaroud peut être utilisé?Le bouton dessine un état normal après avoir appuyé sur

Merci

Répondre

0

C'est le comportement par défaut en mode tactile, et vous ne devriez pas chercher à l'altérer. C'est ainsi que vos utilisateurs s'attendent à ce que votre application se comporte. Si vous réglez la mise au point sans toucher l'écran, comme lorsque vous utilisez la boule de commande disponible sur la plupart des appareils, elle restera en effet nette, mais en mode tactile, il n'y a pas de représentation visuelle de l'état de mise au point.

+0

Merci pour une réponse rapide, David! Mais cela signifie-t-il que la seule façon de "mettre en évidence" le bouton sélectionné est de le faire par programmation? – Rilakkuma

+0

Je veux dire, si j'ai un menu à la partie inférieure du scren qui me permet de démarrer quelques activités je veux que le bouton reste en mode "sélectionné" indiquant que cette activité est "connectée" avec ce bouton, quelque chose comme bouton bascule ... Merci – Rilakkuma

+0

@Rilakkuma: Vous pourriez envisager de faire votre propre graphique non pas pour le 'Button', mais pour le' ToggleButton' qui est conçu exactement pour cela: http://developer.android.com/intl/zh -CN/reference/android/widget/ToggleButton.html –

0

Je pense que ce qui suit peut aider. Je voulais que l'un des boutons d'une liste de boutons soit coloré différemment, pour souligner le fait que vous étiez déjà dans cette section.

Mes boutons Android: champ d'arrière-plan a été mis à la drawable suivante (drawable/my_btn.xml)

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@drawable/btn_pressed" /> 
    <item android:state_focused="true" android:drawable="@drawable/btn_focused" /> 

    <item android:state_selected="true" android:drawable="@drawable/btn_selected" /> 

    <item android:drawable="@color/transparent" /> 
</selector> 

Vous remarqué que j'ai un élément avec l'androïde: state_selected = "true" ensemble.

Ensuite, dans le code, vous pouvez avoir

Button mybtn = (Button)findViewById(R.id.my_btn_1); 
mybtn.setOnClickListener(new OnClickListener(){ 
    public void onClick(View v) { 
     Button btn = (Button)findViewById(R.id.nav_secondary_1); 
     btn.setSelected(true); 
    } 
}); 

Je ne sais pas si vous pouvez régler la stat sélectionnée d'un bouton dans une propriété dans le fichier XML. Pas sûr que tu veuilles le faire.

L'ordre des articles est également important car il peut changer la visibilité des autres états. L'ordre actuel vous permettra de voir les états pressés et focalisés. Cependant, si vous avez déplacé l'élément sélectionné vers le haut, vous constaterez que vos états de compression et de mise au point ne seront pas affichés. Je ne suis pas sûr si vous pouvez combiner les états pressé, concentré et sélectionné pour permettre des graphiques plus personnalisés. Je ne l'ai pas essayé, mais ce qui suit permettrait des mises en page graphiques basées sur l'état plus compliquées.

<item android:state_selected="true" android:state_focused="true" android:drawable="@drawable/btn_selected_focused" /> 

Lisez sur le sujet Selectors ici http://developer.android.com/guide/topics/resources/drawable-resource.html

+0

Je ne préconise pas cela comme une expérience utilisateur/comportement correct, mais il est plutôt possible de fournir un état sélectionné pour un bouton. – Emile

Questions connexes