Android : bouton modifier le texte et la couleur d'arrière-plan
Comment puis-je modifier le texte et les couleurs d'arrière-plan lors de mon bouton est pressé, avec xml ?
Pour changer la couleur du texte que 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 le fond je peux faire (en l'utilisant dans un sélecteur de point avec drawable de référence) :
<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 /bleu
EDIT : réponse
J'ai totalement oublié que l'arrière-plan et la couleur du texte sont gérés séparément, donc, c'est comment je l'ai fait :
<Button
android:textColor="@color/filtersbuttoncolors"
android:background="@drawable/mybackgroundcolors" />
Dans mybackgroundcolors.xml je gère le fond et dans la filtersbuttoncolors.xml -je gérer la couleur du texte. Dans les deux fichiers xml-je gérer l'état (pressé, sélectionnés par défaut)
- stackoverflow.com/a/16213334/1567588
- ne pouvons-nous pas le faire sans 9patch ?
- Oui. nous le pouvons. Je vois que vous avez eu une réponse. Heureux de codage..
Vous devez vous connecter pour publier un commentaire.
Voici un exemple d'un drawable qui sera blanc par défaut, le noir lorsqu'il est pressé:
Depuis l'API de niveau 21, vous pouvez utiliser :
vous suffit d'ajouter ceci dans votre xml
app:backgroundTint="@android:color/white"
Je pense que faire de cette façon est beaucoup plus simple:
Et vous avez besoin de
import android.graphics.Color;
pas:import android.R.color;
Ou vous pouvez tout simplement écrire le 4-byte code hex (pas 3 octets)
0xFF000000
où le premier octet est le réglage de l'alpha.ajouter en dessous de la ligne de styles.xml
en bouton, ajouter
android:theme="@style/AppTheme.Gray"
, exemple:Juste en complément @Jonsmoke de réponse.
Pour l'API de niveau 21 et ci-dessus, vous pouvez utiliser :
en XML pour le bouton de mise en page.
Pour l'API de niveau en-dessous de 21 utiliser un AppCompatButton à l'aide de application espace de noms au lieu de android pour backgroundTint.
Par exemple:
Lorsque vous créez une Application, un fichier appelé styles.xml sera créé dans votre res/values dossier. Si vous modifiez les styles, vous pouvez modifier l'arrière-plan, la couleur du texte, etc pour tous vos mises en page. De cette façon, vous n'avez pas à aller dans chaque mise en page et de changer le manuellement.
styles.xml:
parent="@android:style/Theme.Light"
est Google native de couleurs. Ici est une référence de ce que le natif de styles:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml
name="Theme.AppBaseTheme"
signifie que vous êtes la création d'un style qui hérite de tous les styles deparent="@android:style/Theme.Light"
.Cette partie vous pouvez l'ignorer, sauf si vous voulez hériter de AppBaseTheme de nouveau. =
<style name="AppTheme" parent="AppBaseTheme">
@drawable/custom_background est une image personnalisée que j'ai mis dans le dossier drawable. C'est un 300x300 image png.
#295055 est une couleur bleu foncé.
Mes modifications du code de l'arrière-plan et la couleur du texte. Pour le texte du Bouton, s'il vous plaît regarder à travers Google native de stlyes (le lien que j'ai donné u ci-dessus).
Puis dans le Manifeste Android, n'oubliez pas d'inclure le code: