En référence à la nouvelle TextInputLayout
version de Google, comment modifier la couleur du texte de l'étiquette flottante?
Réglage colorControlNormal
, colorControlActivated
, colorControlHighLight
dans des styles ne l' aide.
Voici ce que j'ai maintenant:
colorAccent
? J'ai changé le style personnalisécolorAccent
en noir et la ligne refléterait toujours ce que j'ai pourcolorControlNormal
le style principal.Réponses:
Essayez le code ci-dessous, il fonctionne dans un état normal
Dans le dossier des styles Code TextLabel
Définir sur le thème principal de l'application, cela ne fonctionne que surligner l'état uniquement
Mettre à jour:
Solution
Mettre à jour:
Utilisez-vous la bibliothèque de composants de matériaux
Vous pouvez ajouter des lignes ci-dessous à votre thème principal
ou bien voulez-vous différentes couleurs à l'état noraml et à l'état activé et avec la personnalisation, suivez le code ci-dessous
Ajoutez la ligne ci-dessous à votre thème principal, sinon vous pouvez définir le style sur textinputlayout dans votre xml
la source
android.view.InflateException: Error inflating class TextView
android:theme
styleTextInputLayout
entraîne desInflateException
plantages sur les Zenphones ASUS (et éventuellement d'autres appareils).ThemeOverlay.AppCompat.Light
aider à résoudre le plantage de mon ASUS Zenphone (@friederbluemle)la source
android:textColorHint="@color/gray" //support 23.0.0
rendu la couleur du texte de mon indice visible (la couleur du texte de l'indice était noire par défaut, quelle que soit la couleur du texte de l'indice que j'ai définie et si l'arrière-plan est noir, le texte est complètement cachéTrouvé la réponse, utilisez l'
android.support.design:hintTextAppearance
attribut pour définir votre propre apparence d'étiquette flottante.Exemple:
la source
Namespace 'android.support.design' not bound
. Aucune suggestion?compile 'com.android.support:design:23.1.1'
à votre fichier de notes d'applicationVous n'avez pas besoin d'utiliser
android:theme="@style/TextInputLayoutTheme"
pour modifier la couleur de l'étiquette flottante, car cela affectera l'ensemble du thème du petit TextView utilisé comme étiquette. Au lieu de cela, vous pouvez utiliserapp:hintTextAppearance="@style/TextInputLayout.HintText"
où:Faites-moi savoir si la solution fonctionne :-)
la source
Avec la bibliothèque de composants de matériaux, vous pouvez personnaliser la
TextInputLayout
couleur du texte de l'indice à l'aide (elle nécessite la version 1.1.0)Dans la mise en page:
app:hintTextColor
attribut: la couleur de l'étiquette lorsqu'elle est réduite et que le champ de texte est actifandroid:textColorHint
attribut: la couleur de l'étiquette dans tous les autres états de champ de texte (tels que repos et désactivé)Widget.MaterialComponents.TextInputLayout.*
:Le sélecteur par défaut pour
android:textColorHint
est:la source
Ok, donc, j'ai trouvé cette réponse très utile et merci à toutes les personnes qui ont contribué. Mais juste pour ajouter quelque chose. La réponse acceptée est en effet la bonne réponse ... MAIS ... dans mon cas, je cherchais à implémenter le message d'erreur sous le
EditText
widget avecapp:errorEnabled="true"
et cette seule ligne m'a rendu la vie difficile. il semble que cela remplace le thème que j'ai choisiandroid.support.design.widget.TextInputLayout
, qui a une couleur de texte différente définie parandroid:textColorPrimary
.À la fin, j'ai commencé à appliquer une couleur de texte directement au
EditText
widget. Mon code ressemble à ceci:styles.xml
Et mon widget:
Maintenant, il affiche la couleur du texte noir au lieu du
textColorPrimary
blanc.la source
Je vous suggère de créer un thème de style pour TextInputLayout et de ne changer que la couleur d'accent. Définissez le parent sur le thème de base de votre application:
la source
Dans la dernière version de la bibliothèque de support (23.0.0+),
TextInputLayout
prend l'attribut suivant en XML pour modifier la couleur d'étiquette flottante:android:textColorHint="@color/white"
la source
Au lieu de Brahmam Yamani, je préfère utiliser Widget.Design.TextInputLayout comme parent. Cela garantit que tous les éléments requis sont présents, même si tous les éléments ne sont pas remplacés. Dans la réponse Yamanis, l'application plantera avec une ressource non résoluble, si setErrorEnabled (true) est appelé.
Changez simplement le style comme suit:
la source
Dans mon cas, j'ai ajouté ceci "
app:hintTextAppearance="@color/colorPrimaryDark"
dans mon widget TextInputLayout.la source
error: '#FFFFFF' is incompatible with attribute hintTextAppearance
Par programme, vous pouvez utiliser:
Explication:
Obtenez la valeur de couleur int d'une ressource de couleur (un moyen de présenter les couleurs RVB utilisées par Android). J'ai écrit ColorEnabled, mais il devrait vraiment être, pour cette réponse, ColorHintExpanded & ColorViewCollapsed. Quoi qu'il en soit, c'est la couleur que vous verrez lorsque le conseil d'une vue "TextInputLayout" est sur l'état Expanded ou Collapsed; vous le définirez en utilisant le tableau suivant sur la fonction "setDefaultHintTextColor" de la vue. Référence: Référence pour TextInputLayout - recherchez dans cette page la méthode "setDefaultHintTextColor" pour plus d'informations
En regardant les documents ci-dessus, vous pouvez voir que les fonctions définissent les couleurs de l'indice développé et réduit en utilisant un ColorStateList.
Documents ColorStateList
Pour créer ColorStateList, j'ai d'abord créé une matrice avec les états que je veux, dans mon cas state_enabled & state_disabled (dont sont, dans TextInputLayout, égal à Hint Expanded et Hint Collapsed [Je ne me souviens pas dans quel ordre lol, de toute façon je l'ai trouvé) je fais juste un test]). Ensuite, je passe au constructeur de ColorStateList les tableaux avec des valeurs int de ressources de couleur, ces couleurs ont une correspondance avec la matrice d'états (chaque élément du tableau de couleurs correspond au tableau respectif dans la matrice d'états à la même position). Ainsi, le premier élément du tableau de couleurs sera utilisé comme couleur pour chaque état du premier tableau de la matrice d'états (dans notre cas, le tableau n'a qu'un seul élément: état activé = état élargi pour TextInputLayut). Les dernières choses que les états ont des valeurs positives / négatives, et vous n'avez que les valeurs positives,
J'espère que cela vous sera utile. Au revoir, bon codage (:
la source
Pour changer la couleur de l'indice et modifier la couleur de soulignement du texte: colorControlActivated
Pour changer la couleur du compteur de caractères: textColorSecondary
Pour modifier la couleur du message d'erreur: colorControlNormal
Pour modifier la teinte du bouton de visibilité du mot de passe: colorForeground
Pour plus d'informations sur TextInputLayout, consultez http://www.zoftino.com/android-textinputlayout-tutorial
la source
vous devez changer votre couleur ici
la source
Maintenant, utilisez simplement
colorAccent
etcolorPrimary
fonctionnera parfaitement.la source
colorPrimary
le thème pour définir l'indice et la couleur focalisée de la ligne de fond. Bien qu'il ait vraiment dû y avoir une explication / code pour le mettre en valeur dans cette réponseJe résous le problème. C'est la mise en page:
C'est le style:
Vous devez utiliser votre thème dans l'application:
la source
pour changer la couleur de l'étiquette de texte lorsque vous vous concentrez dessus. c'est-à-dire en le tapant. vous devez ajouter spécifier
Juste une note: vous devez ajouter toutes ces implémentations à votre thème principal.
la source
Son travail pour moi ..... ajouter une couleur de conseil dans TextInputLayout
la source
J'ai essayé d'utiliser android: textColorHint dans android.support.design.widget.TextInputLayout, cela fonctionne bien.
la source
ajoutez ceci aux styles et définissez TextInputLayout Theam sur App2 et cela fonctionnera;)
la source
res / values / styles.xml
la source
Peut utiliser
app:hintTextColor
si vous utilisezcom.google.android.material.textfield.TextInputLayout
, essayez cecila source
Essayez le code ci-dessous, il fonctionne dans un état normal
Dans le dossier des styles Code TextLabel
la source
De la documentation:
Je me suis donc
android:hint
etapp:hintTextColor
surTextInputLayout
, pasTextInputEditText
et cela a fonctionné.la source
Parce que vous devez ajouter
colorControlNormal
,colorControlActivated
, lescolorControlHighLight
articles au thème principal de l' application:la source