2010-10-07 11 views
0

Couleur du bouton ne devrait pas changer quand je relâche le bouton dans Android

<item android:state_focused="true" > 
    <shape> 
     <gradient 
      android:endColor="#FF9900" 
      android:startColor="#FF9966" 
      android:angle="270" /> 
     <stroke 
      android:width="3dp" 
      android:color="#CCCCCC" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

    <item>   
    <shape> 
     <gradient 
      android:endColor="#FFFFFF" 
      android:startColor="#FFFFFF" 
      android:angle="270" /> 
     <stroke 
      android:width="1dp" 
      android:color="#666666" /> 
     <corners 
      android:radius="1dp" /> 
     <padding 
      android:left="3dp" 
      android:top="3dp" 
      android:right="3dp" 
      android:bottom="3dp" /> 
    </shape> 
</item> 

Ce qui précède est le code que je l'ai écrit pour remplir les frontières de bouton avec couleur.Le noir même code que j'utilisais pour 3 boutons en définissant comme arrière-plan.Maintenant, quand je clique sur le bouton 1, la couleur rouge apparaît et va quand je libère. Mais je veux que la couleur rouge soit visible, jusqu'à ce que j'appuie sur le bouton suivant. Bien que je relâche Button1 après la pression, la couleur rouge devrait être visible. Mais la couleur rouge ne devrait disparaître que lorsque j'appuie sur un autre bouton.
Quelqu'un peut-il m'aider à résoudre ce problème?
S'il vous plaît quelqu'un m'aider à résoudre ce problème?
Merci à l'avance,

+0

Pourquoi ne pas utiliser un 'ToggleButton'? – CommonsWare

Répondre

0

Je crains que vous ne pouvez pas terminer votre objectif seulement à travers xml qui définit les états du bouton. Parce que, AFAIK il n'y a pas d'état qui définit le comportement du bouton après sa sortie (juste normal, concentré et pressé). L'état normal est supposé.

Mais, vous pouvez faire ce qui suit:

  • disons que votre drawable XML d'origine est drawable A
  • définir de nouveaux xml drawable B, qui a l'état normal défini comme voulu bouton rouge
  • après utilisateur appuie sur le bouton, il sera rouge parce que drawable A dit que
  • lorsque le bouton libère l'utilisateur, assurez-vous qu'il reste rouge à travers le changement du drawable

    myButton.setBackgroundDrawable (getResources(). GetDrawable (R.drawable.B));

  • lorsque l'utilisateur appuie sur un autre bouton de revenir en arrière à l'état normal par

    myButton.setBackgroundDrawable (getResources() getDrawable (R.drawable.A).);

0

Essayez d'ajouter un état pour android:state_selected

+0

android: state_selected n'a aucun effet. J'ai ajouté un tag séparé pour cela avec android: state_pressed.Kindly me donner une autre solution –

Questions connexes