web-dev-qa-db-fra.com

Android bouton personnalisé; changer la couleur du texte

J'ai créé un bouton qui modifie l'arrière-plan pouvant être dessiné sur différents états, comme suit:

 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
 <item Android:state_pressed="true" Android:drawable="@drawable/btn_location_pressed" /> <!-- pressed -->
 <item Android:state_focused="true" Android:drawable="@drawable/btn_location_pressed"/> <!-- focused -->
 <item Android:drawable="@drawable/btn_location"/> <!-- default -->

Le problème ici est que j'essaie aussi de changer le textColor comme je le fais avec le dessinable, mais je ne suis pas capable de le faire. J'ai déjà essayé Android: textColor et Android: couleur, mais le premier ne fonctionne pas pendant que les secondes changent d'arrière-plan.

Le code suivant fait partie de ma mise en page. En ce qui concerne la couleur du texte, cela ne fonctionne que pour la couleur du texte à l'état normal, donc ne la changez pas en blanc lorsque vous appuyez dessus.

<Button Android:id="@+id/location_name"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:paddingTop="5dp"
        Android:background="@drawable/location"          
        Android:textSize="15sp"
        Android:textColor="@color/location_color"
        Android:textColorHighlight="#FFFFFF"
   />

Quelqu'un a-t-il un indice?

240
dwbrito

Créez une couleur avec état pour votre bouton, comme pour l'arrière-plan, par exemple:

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <!-- Focused and not pressed -->
    <item Android:state_focused="true" 
          Android:state_pressed="false" 
          Android:color="#ffffff" />

    <!-- Focused and pressed -->
    <item Android:state_focused="true" 
          Android:state_pressed="true" 
          Android:color="#000000" />

    <!-- Unfocused and pressed -->
    <item Android:state_focused="false" 
          Android:state_pressed="true" 
          Android:color="#000000" />

    <!-- Default color -->
    <item Android:color="#ffffff" />

</selector>

Placez le XML dans un fichier au dossier res/drawable, à savoir res/drawable/button_text_color.xml. Ensuite, définissez le dessinable comme couleur du texte:

Android:textColor="@drawable/button_text_color"
556
Konstantin Burov

Une autre façon de le faire est dans votre classe:

import Android.graphics.Color; // add to top of class  

Button btn = (Button)findViewById(R.id.btn);

// set button text colour to be blue
btn.setTextColor(Color.parseColor("blue"));

// set button text colour to be red
btn.setTextColor(Color.parseColor("#FF0000"));

// set button text color to be a color from your resources (could be strings.xml)
btn.setTextColor(getResources().getColor(R.color.yourColor));

// set button background colour to be green
btn.setBackgroundColor(Color.GREEN);
16
Michael Yaworski

ok très simple, allez d’abord à 1. res-valuse and open colors.xml 2.copie 1 du texte défini, par exemple # FF4081, et changez le nom, par exemple, j’ai changé en blanc et change sa valeur, par exemple, j’ai remplacé par #FFFFFF pour valeur blanche comme celle-ci

<color name="White">#FFFFFF</color>

puis à l'intérieur de votre bouton, ajoutez cette ligne

 b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White));

ok b3 est le nom de mon bouton, ainsi le nom de votre bouton a été modifié. Tous les autres seront identiques si vous utilisez la couleur blanche si vous changez de couleur puis changez le nom de votre couleur en blanc, mais vous avez d’abord défini cette couleur en couleurs. xml comme je l'ai expliqué dans le pont 2

4
SeekingKnowleges

Changer la couleur du texte du bouton

Parce que cette méthode est maintenant obsolète

button.setTextColor(getResources().getColor(R.color.your_color));

J'utilise les éléments suivants:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));
1
Gjoko Bozinov

Utilisez getColorStateList comme ceci

setTextColor(resources.getColorStateList(R.color.button_states_color))

au lieu de getColor

setTextColor(resources.getColor(R.color.button_states_color))
0
Li Jin