Question

J'ai fait un bouton qui change la drawable de fond sur les différents états, de cette façon:

 <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 drawable mais je ne suis pas capable. Je l'ai déjà essayé android: textColor et Android:. Couleur, mais le premier ne fonctionne pas alors que les secondes changements mon arrière-plan

Le code suivant fait partie de ma mise en page. En ce qui concerne la couleur du texte, il ne fonctionne que pour la couleur normale du texte d'état, donc pas changer à la blanche activation de la touche

<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 at-il eu un indice?

Était-ce utile?

La solution

Créer une couleur stateful pour votre bouton, comme vous l'avez fait pour le fond, 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 dire res / drawable / button_text_color.xml. Ensuite, il suffit régler la drawable comme la couleur du texte:

android:textColor="@drawable/button_text_color"

Autres conseils

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

ok première très simple à aller 1. res-valuse et Colors.xml ouvert 2.Copie 1 du texte défini par exemple leur # FF4081 et le nom du changement, par exemple, je l'ai changé en blanc et changer sa valeur, par exemple, je l'ai changé à #FFFFFF pour la valeur blanche comme ceci

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

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

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

b3 ok est le nom de mon bouton pour changer le nom de ur touche tous les autres seront même si u utiliser la couleur blanche si vous changez de couleur différente puis changer blanc au nom de votre couleur, mais vous devez d'abord définir cette couleur dans Colors.xml comme je l'ai expliqué pont 2

Changer la couleur de texte

Parce que cette méthode est maintenant dépréciée

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

J'utilise ce qui suit:

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

Utilisez getColorStateList comme ceci

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

au lieu de getColor

setTextColor(resources.getColor(R.color.button_states_color))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top