En général, vous ne pouvez pas modifier les styles par programme; vous pouvez définir l'apparence d'un écran, d'une partie d'une mise en page ou d'un bouton individuel dans votre mise en page XML à l'aide de thèmes ou de styles . Les thèmes peuvent cependant être appliqués par programme .
Il existe également une chose telle que StateListDrawable
qui vous permet de définir différents drawables pour chaque état dans lequel vous Button
pouvez être, qu'il soit focalisé, sélectionné, enfoncé, désactivé, etc.
Par exemple, pour que votre bouton change de couleur lorsqu'il est enfoncé, vous pouvez définir un fichier XML appelé res/drawable/my_button.xml
répertoire comme ceci:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/btn_pressed" />
<item
android:state_pressed="false"
android:drawable="@drawable/btn_normal" />
</selector>
Vous pouvez ensuite appliquer ce sélecteur à a Button
en définissant la propriété android:background="@drawable/my_button"
.
style
attribut Android , mais vous pouvez définir par programme l'arrière-plan d'unButton
comme vous pouvez avec n'importe quelle autre vue, si cela suffit. En outre, commeButton
hérite deTextView
, vous pouvez modifier les propriétés du texte. Il suffit de regarder la documentation de l'API pour ces éléments ... developer.android.com/reference/android/view/…Tout d'abord, vous n'avez pas besoin d'utiliser un gonfleur de mise en page pour créer un simple bouton. Vous pouvez simplement utiliser:
Si vous souhaitez styliser le bouton, vous avez 2 choix: le plus simple consiste simplement à spécifier tous les éléments du code, comme le suggèrent de nombreuses autres réponses:
L'autre option consiste à définir le style en XML et à l'appliquer au bouton. Dans le cas général, vous pouvez utiliser a
ContextThemeWrapper
pour cela:Pour modifier les attributs liés au texte sur un TextView (ou ses sous-classes comme Button), il existe une méthode spéciale:
Ce dernier ne peut pas être utilisé pour changer tous les attributs; par exemple, pour modifier le remplissage, vous devez utiliser un fichier
ContextThemeWrapper
. Mais pour la couleur du texte, la taille, etc., vous pouvez utilisersetTextAppearance
.la source
Oui, vous pouvez utiliser par exemple dans un bouton
la source
Vous pouvez faire des attributs de style comme ceci:
au lieu de:
la source
Si vous utilisez la bibliothèque de support, vous pouvez simplement utiliser
pour TextViews et boutons. Il existe des classes similaires pour le reste des vues :-)
la source
Pour tous ceux qui recherchent une réponse matérielle, consultez cet article SO: Boutons de coloriage dans Android avec Material Design et AppCompat
J'ai utilisé une combinaison de cette réponse pour définir la couleur du texte par défaut du bouton sur blanc pour mon bouton: https://stackoverflow.com/a/32238489/3075340
Ensuite, cette réponse https://stackoverflow.com/a/34355919/3075340 pour définir par programme la couleur d'arrière-plan. Le code pour cela est:
your_colored_button
peut être juste unButton
bouton normal ou un bouton AppCompat si vous le souhaitez - j'ai testé le code ci-dessus avec les deux types de boutons et cela fonctionne.EDIT: J'ai trouvé que les appareils pré-sucette ne fonctionnent pas avec le code ci-dessus. Voir cet article sur la façon d'ajouter la prise en charge des appareils pré-sucette: https://stackoverflow.com/a/30277424/3075340
En gros, faites ceci:
la source
Selon les attributs de style que vous souhaitez modifier, vous pourrez peut-être utiliser la bibliothèque de Paris:
De nombreux attributs tels que background, padding, textSize, textColor, etc. sont pris en charge.
Avis de non-responsabilité: j'ai créé la bibliothèque.
la source
La réponse de @Dayerman et @h_rules est juste. Pour donner un exemple élaboré avec du code, dans le dossier drawable, créez un fichier xml appelé button_disabled.xml
Puis à Java,
Cela définira la propriété du bouton sur désactivé et définit la couleur sur argent.
[La couleur est définie dans color.xml comme:
la source
Au moment de l'exécution, vous savez quel style vous voulez que votre bouton ait. Donc, au préalable, en xml dans le dossier de mise en page, vous pouvez avoir tous les boutons prêts à l'emploi avec les styles dont vous avez besoin. Ainsi, dans le dossier layout, vous pourriez avoir un fichier nommé: button_style_1.xml. Le contenu de ce fichier pourrait ressembler à:
Si vous travaillez avec des fragments, dans onCreateView, vous gonflez ce bouton, comme:
où container est le conteneur ViewGroup associé à la méthode onCreateView que vous remplacez lors de la création de votre fragment.
Besoin de deux autres boutons? Vous les créez comme ceci:
Vous pouvez personnaliser ces boutons:
Ensuite, vous ajoutez vos boutons personnalisés et stylisés au conteneur de disposition que vous avez également gonflé dans la méthode onCreateView:
Et c'est ainsi que vous pouvez travailler dynamiquement avec des boutons stylisés.
la source
J'ai créé une interface d'aide pour cela en utilisant le modèle de support.
Maintenant, pour chaque style que vous souhaitez utiliser de manière pragmatique, implémentez simplement l'interface, par exemple:
Déclarez un stylable dans votre
attrs.xml
, le stylable pour cet exemple est:Voici le style déclaré dans
styles.xml
:Et enfin la mise en place du porte-style:
J'ai trouvé cela très utile car il peut être facilement réutilisé et garde le code propre et détaillé, je recommanderais de l'utiliser uniquement comme variable locale afin que nous puissions permettre au ramasse-miettes de faire son travail une fois que nous avons terminé de définir tous les styles .
la source
J'ai été confronté au même problème récemment. voici comment je l'ai résolu.
Merci !
la source