web-dev-qa-db-fra.com

Comment définir une couleur différente pour l'état enfoncé du bouton?

J'ai une Buttons sur mon application Android. Ils ont une icône et un texte. Je peux définir la couleur d'arrière-plan d'une Button en code Java. Si vous cliquez sur le bouton, je souhaite afficher une couleur différente. Alors, comment définir une couleur différente pour l'état pressé de Button?

<Button 
  Android:id="@+id/save" 
  Android:layout_width="130dip"
  Android:layout_height="wrap_content" 
  Android:scaleType="center"
  Android:drawableTop="@drawable/save"
  Android:text="Save"
  Android:textColor="#FFFFFF"
  Android:textSize="14dip" 
>

La méthode onCreate:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.homescreen);
 save = (Button)findViewById(R.id.save);
    save.setBackgroundColor(Color.rgb(27,161,226)); }
26
realuser

créer un fichier xml en utilisant l'image du bouton comme ceci avec mybutton.xml dans un dossier pouvant être dessiné

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
   <item Android:state_pressed="true" Android:drawable="@color/blue" />
   <item Android:state_focused="true" Android:drawable="@color/gold" />
   <item Android:drawable="@color/grey" />
</selector>

et l'utiliser dans le code XML du bouton

Android:background="@drawable/mybutton"

ajoutez ces codes de couleur dans la ressource -> valeurs -> couleurs.xml comme ceci 

<?xml version="1.0" encoding="utf-8"?>
<resources>   
  <color name="blue">#0066cc</color>
  <color name="gold">#e6b121</color>
  <color name="grey">#cccccc</color>
</resources>

Référence: Modifier l'arrière-plan du bouton au toucher

50

Vous trouverez ci-dessous un exemple de code pour la liste d'états de couleurs utilisée pour un bouton.

<?xml version="1.0" encoding="UTF-8"?>

    <selector xmlns:Android="http://schemas.Android.com/apk/res/Android" >
        <item
            Android:color="#c0c0c0"
            Android:state_selected="true"/>
        <item
            Android:color="#ffffff"
            Android:state_pressed="true"/>
        <item
            Android:color="#9A9A9A"
            Android:state_focused="false"
            Android:state_pressed="false"
            Android:state_selected="false"/>
</selector>

Consultez également le lien ci-dessous pour obtenir la liste des couleurs. 

http://developer.Android.com/guide/topics/resources/color-list-resource.html

5
Maneesh

Vous devez utiliser un sélecteur pouvant être dessiné avec les états pressés, plus généralement dans les liens XML ci-dessous.

http://developer.Android.com/reference/Android/graphics/drawable/StateListDrawable.html

http://developer.Android.com/guide/topics/resources/drawable-resource.html#StateList

3
caguilar187

Utilisez un StateList . Voici un exemple de sélecteur avec un dessin différent pour l'état pressé:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:drawable="@drawable/drawable_for_pressed_state" Android:state_pressed="true"/>
    <item Android:drawable="@drawable/drawable_for_normal_state"/>

</selector>
2
Luksprog

edittext_modified_states.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector
  xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_focused="true" Android:state_pressed="false" Android:drawable="@drawable/apptheme_textfield_activated_holo_light" />
    <item Android:state_focused="true" Android:state_pressed="true" Android:drawable="@drawable/apptheme_textfield_focused_holo_light" />
    <item Android:state_focused="false" Android:state_pressed="true" Android:drawable="@drawable/apptheme_textfield_disabled_focused_holo_light"/>
    <item Android:drawable="@drawable/apptheme_textfield_default_holo_light" />
</selector>

ici: http://Android-holo-colors.com allez sur ce site et sélectionnez votre couleur et l'imort dans votre dessinable goto layout xml et définir l’arrière-plan du bouton. Android: background = "@ drawable/edittext_modified_states"

0
Faisal Ashraf