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?
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"
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 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
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));
Utilisez getColorStateList
comme ceci
setTextColor(resources.getColorStateList(R.color.button_states_color))
au lieu de getColor
setTextColor(resources.getColor(R.color.button_states_color))