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)); }
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
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
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
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>
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"