Con referencia al nuevo TextInputLayout
lanzamiento de Google, ¿cómo cambio el color del texto de la etiqueta flotante?
Configuración colorControlNormal
, colorControlActivated
, colorControlHighLight
en los estilos no ayuda.
Esto es lo que tengo ahora:
colorAccent
? Cambié el estilo personalizadocolorAccent
a negro y la línea aún reflejaría lo que tengo paracolorControlNormal
el estilo principal.Respuestas:
Pruebe el siguiente código: funciona en estado normal
En la carpeta de estilos TextLabel Code
Establecer como tema principal de la aplicación, solo funciona Solo resaltar estado
Actualizar:
Solución
Actualizar:
¿Está utilizando la Biblioteca de componentes de material?
Puedes agregar líneas debajo de tu tema principal
o si quieres diferentes colores en estado noraml y estado activado y con personalización sigue el siguiente código
Agregue la siguiente línea a su tema principal o puede configurar el estilo para textinputlayout en su xml
fuente
android.view.InflateException: Error inflating class TextView
android:theme
estilo en losTextInputLayout
resultados deInflateException
fallas en ASUS Zenphones (y posiblemente otros dispositivos).ThemeOverlay.AppCompat.Light
que me ayuden a resolver fallas en mi ASUS Zenphone (@friederbluemle)fuente
android:textColorHint="@color/gray" //support 23.0.0
hizo que el color del texto de la pista fuera visible (el color del texto de la pista era negro por defecto, independientemente del color del texto de la pista que configuré y si el fondo es negro, el texto está completamente ocultoEncontró la respuesta, use el
android.support.design:hintTextAppearance
atributo para establecer su propia apariencia de etiqueta flotante.Ejemplo:
fuente
Namespace 'android.support.design' not bound
. ¿Alguna sugerencia?compile 'com.android.support:design:23.1.1'
a tu archivo de aplicación gradleNo necesita usar
android:theme="@style/TextInputLayoutTheme"
para cambiar el color de la etiqueta flotante, ya que va a afectar a todo el tema para el pequeño TextView utilizado como etiqueta. En cambio, podría usarapp:hintTextAppearance="@style/TextInputLayout.HintText"
donde:Avíseme si la solución funciona :-)
fuente
Con la biblioteca de Componentes de material puede personalizar el
TextInputLayout
color del texto de la sugerencia utilizando (requiere la versión 1.1.0)En el diseño:
app:hintTextColor
atributo: el color de la etiqueta cuando se contrae y el campo de texto está activoandroid:textColorHint
atributo: el color de la etiqueta en todos los demás estados de campo de texto (como en reposo y deshabilitado)Widget.MaterialComponents.TextInputLayout.*
:El selector predeterminado para
android:textColorHint
es:fuente
Ok, entonces, encontré esta respuesta muy útil y gracias a todas las personas que contribuyeron. Sin embargo, solo para agregar algo. La respuesta aceptada es de hecho la respuesta correcta ... PERO ... en mi caso, estaba buscando implementar el mensaje de error debajo del
EditText
widget conapp:errorEnabled="true"
y esta sola línea me hizo la vida difícil. parece que esto anula el tema que elegíandroid.support.design.widget.TextInputLayout
, que tiene un color de texto diferente definido porandroid:textColorPrimary
.Al final, decidí aplicar un color de texto directamente al
EditText
widget. Mi código se parece a esto:styles.xml
Y mi widget:
Ahora muestra el color del texto negro en lugar del
textColorPrimary
blanco.fuente
Le sugiero que cree un tema de estilo para TextInputLayout y cambie solo el color de acento. Establezca el padre en el tema base de su aplicación:
fuente
En la última versión de la biblioteca de soporte (23.0.0+),
TextInputLayout
toma el siguiente atributo en XML para editar el color de la etiqueta flotante:android:textColorHint="@color/white"
fuente
En lugar de la respuesta de Brahmam Yamani, prefiero usar Widget.Design.TextInputLayout como padre. Eso garantiza que todos los elementos necesarios estén presentes, incluso si no todos los elementos se sobrescriben. En la respuesta de Yamanis, la aplicación se bloqueará con un recurso irresoluble, si se llama a setErrorEnabled (true).
Simplemente cambie el estilo a lo siguiente:
fuente
En mi caso, agregué esto "
app:hintTextAppearance="@color/colorPrimaryDark"
en mi widget TextInputLayout.fuente
error: '#FFFFFF' is incompatible with attribute hintTextAppearance
Programáticamente puedes usar:
Explicacion:
Obtenga el valor de color int de un recurso de color (una forma de presentar los colores rgb utilizados por android). Escribí ColorEnabled, pero realmente debería ser, para esta respuesta, ColorHintExpanded y ColorViewCollapsed. De todos modos, este es el color que verá cuando la sugerencia de una vista "TextInputLayout" esté en estado Expandido o Contraído; lo configurará utilizando la siguiente matriz en la función "setDefaultHintTextColor" de la vista. Referencia: Referencia para TextInputLayout: busque en esta página el método "setDefaultHintTextColor" para obtener más información
Mirando los documentos anteriores, puede ver que las funciones establecen los colores para la sugerencia expandida y contraída mediante una ColorStateList.
ColorStateList docs
Para crear ColorStateList, primero creé una matriz con los estados que quiero, en mi caso state_enabled & state_disabled (que son, en TextInputLayout, es igual a Hint Expanded y Hint Collapsed [No recuerdo en qué orden lol, de todos modos lo encontré simplemente haciendo una prueba]). Luego paso al constructor de ColorStateList las matrices con valores int de recursos de color, estos colores tienen correspondencias con la matriz de estados (cada elemento en la matriz de colores corresponde a la matriz respectiva en la matriz de estados en la misma posición). Por lo tanto, el primer elemento de la matriz de colores se usará como color para cada estado en la primera matriz de la matriz de estados (en nuestro caso, la matriz tiene solo 1 elemento: estado habilitado = estado expandido de pista para TextInputLayut). Los últimos estados tienen valores positivos / negativos, y solo tiene los valores positivos,
Espero que esto sea útil. Adiós, ten una buena codificación (:
fuente
Para cambiar el color de la pista y editar el color de subrayado del texto: colorControlActivated
Para cambiar el color del contador de caracteres: textColorSecondary
Para cambiar el color del mensaje de error: colorControlNormal
Para cambiar el tono del botón de visibilidad de contraseña: colorForeground
Para obtener más información sobre TextInputLayout, lea http://www.zoftino.com/android-textinputlayout-tutorial
fuente
deberías cambiar tu color aquí
fuente
Ahora, simplemente usando
colorAccent
ycolorPrimary
funcionará perfectamente.fuente
colorPrimary
el tema para establecer el color enfocado de la pista y el resultado final. Aunque realmente debería haber alguna explicación / código para mostrarlo en esta respuestaYo resuelvo el problema. Este es el diseño :
Este es el estilo:
Debe usar su tema en la aplicación:
fuente
para cambiar el color de la etiqueta de texto cuando se está enfocando en ella. es decir, escribir en él. tienes que agregar especificar
Solo una nota: debe agregar todas estas implementaciones a su tema principal.
fuente
Está funcionando para mí ... agregue color de pista en TextInputLayout
fuente
Intenté usar android: textColorHint en android.support.design.widget.TextInputLayout funciona bien.
fuente
agregue esto a los estilos y configure TextInputLayout Theam en App2 y funcionará;)
fuente
res / values / styles.xml
fuente
Se puede usar
app:hintTextColor
si lo usascom.google.android.material.textfield.TextInputLayout
, prueba estofuente
Pruebe el siguiente código: funciona en estado normal
En la carpeta de estilos TextLabel Code
fuente
De la documentación:
Así que encendí
android:hint
yapp:hintTextColor
encendíTextInputLayout
, no encendíTextInputEditText
y funcionó.fuente
Debido a que se debe añadir
colorControlNormal
,colorControlActivated
,colorControlHighLight
artículos para el tema principal de la aplicación:fuente