Android: changer le texte du bouton et la couleur de fond



2 Answers

Je pense que faire de cette façon est beaucoup plus simple:

button.setBackgroundColor(Color.BLACK);

Et vous devez import android.graphics.Color; pas: import android.R.color;

Ou vous pouvez simplement écrire le code hexadécimal de 4 octets (pas 3 octets) 0xFF000000 où le premier octet définit l'alpha.

Question

Comment puis-je changer à la fois les couleurs de texte et d'arrière-plan quand mon bouton est pressé, avec xml?

Pour changer la couleur du texte, je peux faire:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="mycolor"/>
    <item android:color="mycolor2/>
</selector>

Pour changer l'arrière-plan que je peux faire (en l'utilisant dans un sélecteur / élément avec référence drawable):

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FF0079FF" />
</shape>

Mais comment puis-je faire les deux? Disons que je veux avoir:

  • Par défaut: texte noir / fond blanc
  • Pressé: texte blanc / fond bleu

EDIT: réponse

J'ai complètement oublié que le fond et la couleur du texte sont gérés séparément, c'est ainsi que je l'ai fait:

<Button
    android:textColor="@color/filtersbuttoncolors"
    android:background="@drawable/mybackgroundcolors" />

Dans mybackgroundcolors.xml je gère l'arrière-plan et dans filtersbuttoncolors.xml je gère la couleur du texte. Dans les deux fichiers xml je gère l'état (pressé, sélectionné, par défaut)




Juste en complément de la réponse de @ Jonsmoke.

Pour le niveau d'API 21 et supérieur, vous pouvez utiliser:

android:backgroundTint="@android:color/white"

en XML pour la disposition des boutons.

Pour le niveau d'API inférieur à 21, utilisez un AppCompatButton en utilisant l'espace de noms de l' application au lieu d' Android pour backgroundTint .

Par exemple:

<android.support.v7.widget.AppCompatButton
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My Button"
    app:backgroundTint="@android:color/white" />



ajouter ci-dessous la ligne dans styles.xml

<style name="AppTheme.Gray" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorButtonNormal">@color/colorGray</item>
    </style>

dans le bouton, ajoutez android:theme="@style/AppTheme.Gray" , exemple:

<Button
            android:theme="@style/AppTheme.Gray"
            android:textColor="@color/colorWhite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@android:string/cancel"/>



Related