Comment définir par programmation de l'attribut style dans une vue
Je reçois une vue à partir du XML avec le code ci-dessous:
Button view = (Button) LayoutInflater.from(this).inflate(R.layout.section_button, null);
Je voudrais mettre un "style" pour le bouton comment puis-je le faire en java depuis un souhaitez utiliser plusieurs style pour chaque bouton que je vais utiliser.
Vous devez vous connecter pour publier un commentaire.
En général, vous ne pouvez pas modifier les styles par programmation, vous pouvez définir l'apparence d'un écran ou d'une partie d'une mise en page ou de l'individu bouton dans votre XML de mise en page à l'aide de des thèmes ou des styles. Les thèmes peuvent, toutefois, être appliquée par programmation.
Il y a aussi une telle chose comme un
StateListDrawable
qui vous permet de définir différents un drawable pour chaque état de la votreButton
peut-être, qu'il s'agisse d', sélectionné, pressé, les handicapés, et ainsi de suite.Par exemple, pour obtenir votre bouton de changer de couleur lorsqu'il est pressé, vous pouvez définir un fichier XML appelé
res/drawable/my_button.xml
répertoire comme ceci:Vous pouvez ensuite appliquer ce sélecteur pour un
Button
par la définition de la propriétéandroid:background="@drawable/my_button"
.style
attribut, mais vous pouvez définir par programmation le fond d'unButton
comme vous le feriez avec tout autre point de vue, si cela suffira. Aussi, en tant queButton
hérite deTextView
, vous pouvez modifier les propriétés du texte. Il suffit de regarder la documentation de l'API pour ces articles... developer.android.com/reference/android/view/...Tout d'abord, vous n'avez pas besoin d'utiliser une mise en page inflater pour créer un simple Bouton. Vous pouvez simplement utiliser:
Si vous voulez le style, la touche, vous avez 2 choix: le plus simple est de spécifier tous les éléments dans le code, comme beaucoup d'autres réponses suggèrent:
L'autre option est de définir le style de XML, et de l'appliquer à la touche. Dans le cas général, vous pouvez utiliser un
ContextThemeWrapper
pour cela:De modifier le texte et les attributs liés à un TextView (ou de ses sous-classes comme le Bouton) il y a une méthode spéciale:
Ce dernier ne peut pas être utilisé pour modifier tous les attributs; par exemple pour changer de rembourrage, vous devez utiliser un
ContextThemeWrapper
. Mais pour la couleur du texte, taille, etc. vous pouvez utilisersetTextAppearance
.Oui, vous pouvez utiliser par exemple dans un bouton
Vous pouvez faire les attributs de style comme:
à la place de:
Pour ceux qui recherchent un Matériau réponse de voir cette SI post: Coloriage les Boutons Android avec la Conception de Matériel et AppCompat
J'ai utilisé une combinaison de cette réponse pour définir la couleur du texte par défaut de la touche de blanc pour mon bouton:
https://stackoverflow.com/a/32238489/3075340
Alors cette réponse https://stackoverflow.com/a/34355919/3075340 de programmation pour définir la couleur d'arrière-plan. Le code est:
your_colored_button
peut être juste unButton
ou un AppCompat bouton si vous le désirez, j'ai testé le code ci-dessus avec les deux types de boutons et ça fonctionne.EDIT: j'ai trouvé que la pré-sucette périphériques ne fonctionne pas avec le code ci-dessus. Voir ce post sur comment ajouter la prise en charge pré-sucette appareils: https://stackoverflow.com/a/30277424/3075340
Fondamentalement ce faire:
Si vous utilisez la bibliothèque de prise en charge, vous pouvez simplement utiliser
pour TextViews et des Boutons. Il existe des classes pour le reste des points de Vue 🙂
La réponse par @Dayerman et @h_rules est droit.
Pour donner un élaboré exemple avec code,
Dans drawable dossier, créer un fichier xml appelé button_disabled.xml
Puis en Java,
Cela va régler le bouton de la propriété pour les handicapés et définit la couleur de l'argent.
[La couleur est définie par color.xml comme:
Au moment de l'exécution, vous savez quel style vous voulez que votre bouton. Donc, à l'avance, en xml, la mise en page de dossier, vous pouvez avoir tout prêt à aller boutons avec les styles dont vous avez besoin. Donc, dans la mise en page de dossier, vous pouvez avoir un fichier nommé: button_style_1.xml. Le contenu de ce fichier peut ressembler à:
Si vous travaillez avec des fragments, puis dans onCreateView vous gonflez le bouton, comme:
où le conteneur est le ViewGroup container associés à la onCreateView méthode vous remplacer lors de la création de votre fragment.
Besoin de deux autres boutons? Vous créer comme ceci:
Vous pouvez personnaliser ces boutons:
Puis vous ajoutez votre personnalisé, stylisée des boutons à la disposition de conteneurs vous aussi gonflé dans le onCreateView méthode:
Et c'est comment vous pouvez dynamiquement travailler avec boutons stylisés.
En fonction de ce que les attributs de style que vous souhaitez changer, vous pourriez être en mesure d'utiliser le Paris de la bibliothèque:
De nombreux attributs comme arrière-plan, rembourrage, textSize, textColor, etc. sont pris en charge.
Avertissement: je l'auteur de la bibliothèque.
J'ai fait une aide de l'interface pour cela, utilisez le titulaire du modèle.
Maintenant, pour chaque style que vous souhaitez utiliser, de façon pragmatique, juste implémenter l'interface, par exemple:
Déclarer un styliser dans votre
attrs.xml
, le styleable pour cet exemple est:Ici le style est-il déclaré dans
styles.xml
:Et enfin la mise en œuvre de la style de support:
J'ai trouvé cela très utile car il peut être réutilisé facilement et conserve le code propre et commenté, je recommande l'utilisation de cette seule comme une variable locale afin que nous puissions permettre le garbage collector pour faire son travail une fois que nous en avons terminé avec le réglage de tous les styles.
J'ai connu le même problème récemment. voici comment je l'ai résolu.
(J'ai donné chacun 50% de l'espace parent(largeur & hauteur))
Merci !