Cómo cambiar el color de la etiqueta de TextinputLayout y edittext subrayar android
Estoy usando TextinputLayout
la biblioteca del diseño del TextinputLayout
. Pero no se pudo personalizar el color de la sugerencia, el color de la etiqueta y el color de subrayado de EditText
dentro de TextinputLayout
. Por favor ayuda.
- TextInputLayout: ¿Cómo dar relleno o margen para sugerir?
- TextInputLayout: RuntimeException - No se pudo resolver el atributo en el índice 24
- TextInputLayout no se muestra cuando se agrega programativamente
- Problema con la alineación mediante TextInputLayout y Spinner
- Cómo deshabilitar flotante mientras muestra error en TextInputLayout
- Cómo cambiar la posición de etiqueta flotante de TextInputLayout en android
- Cambiar el color del selector de contraseña de máscara
- Cómo hacer que el mensaje de error en TextInputLayout aparezca en el centro
- ¿Cómo obtengo espacios pequeños como separador de números en Android?
- TextInputLayout error después de ingresar el valor en edittext
- ¿Cómo se cambia el color de línea / campo de EditText en TextInputLayout (cuando se llama a setError)?
- Cómo lograr TextInputLayout animación al escribir el primer carácter en lugar de ganar el enfoque?
- ImeOption = "actionNext" no funciona en TextInputLayout.
Para cambiar el color de la línea inferior, puedes usarlo en el tema de la aplicación:
<item name="colorControlNormal">#c5c5c5</item> <item name="colorControlActivated">@color/accent</item> <item name="colorControlHighlight">@color/accent</item>
Para más información, compruebe este hilo .
Para cambiar el color de la etiqueta flotante
<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/main_color</item>
Y utilizarlo como:
<android.support.design.widget.TextInputLayout ... app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" >
Actualizar:
Y utilizarlo como a continuación, si desea cambiar el color Sugerencia, cuando no es una etiqueta flotante:
<android.support.design.widget.TextInputLayout ... app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" android:textColorHint="#c1c2c4">
Gracias a @AlbAtNf
Sobre la base de Fedor Kazakov y otras respuestas, he creado una configuración por defecto.
Styles.xml
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="Widget.Design.TextInputLayout" parent="AppTheme"> <item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item> <item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item> <item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item> <item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item> </style> <style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint"> <!-- Floating label appearance here --> <item name="android:textColor">@color/colorAccent</item> <item name="android:textSize">20sp</item> </style> <style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error"> <!-- Error message appearance here --> <item name="android:textColor">#ff0000</item> <item name="android:textSize">20sp</item> </style> </resources>
Activity_layout.xml
<android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Text hint here" android:text="5,2" /> </android.support.design.widget.TextInputLayout>
Enfocado:
Sin foco:
Mensaje de error:
Este artículo del blog describe varios aspectos de estilo de EditText
y AutoCompleteTextView
envueltos por TextInputLayout
.
Para EditText
y AppCompat lib 22.1.0+ puede establecer el atributo theme con algunos parámetros relacionados con el tema:
<style name="StyledTilEditTextTheme"> <item name="android:imeOptions">actionNext</item> <item name="android:singleLine">true</item> <item name="colorControlNormal">@color/greyLight</item> <item name="colorControlActivated">@color/blue</item> <item name="android:textColorPrimary">@color/blue</item> <item name="android:textSize">@dimen/styledtil_edit_text_size</item> </style> <style name="StyledTilEditText"> <item name="android:theme">@style/StyledTilEditTextTheme</item> <item name="android:paddingTop">4dp</item> </style>
Y aplicarlos en EditText
:
<EditText android:id="@+id/etEditText" style="@style/StyledTilEditText"
Para AutoCompleteTextView
cosas son más complicadas porque envolverlo en TextInputLayout
y aplicar este tema rompe el comportamiento de etiqueta flotante. Debe corregir esto en el código:
private void setStyleForTextForAutoComplete(int color) { Drawable wrappedDrawable = DrawableCompat.wrap(autoCompleteTextView.getBackground()); DrawableCompat.setTint(wrappedDrawable, color); autoCompleteTextView.setBackgroundDrawable(wrappedDrawable); }
Y en Activity.onCreate
:
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight)); autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> { if(hasFocus) { setStyleForTextForAutoComplete(getResources().getColor(R.color.blue)); } else { if(autoCompleteTextView.getText().length() == 0) { setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight)); } } });
<style name="Widget.Design.TextInputLayout" parent="android:Widget"> <item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item> <item name="errorTextAppearance">@style/TextAppearance.Design.Error</item> </style>
Puede anular este estilo para el diseño
Y también usted puede cambiar el estilo interno de EditText-item también.
<style name="EditScreenTextInputLayoutStyle" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorControlNormal">@color/actionBar_background</item> <item name="colorControlActivated">@color/actionBar_background</item> <item name="colorControlHighlight">@color/actionBar_background</item> <item name="colorAccent">@color/actionBar_background</item> <item name="android:textColorHint">@color/actionBar_background</item> </style>
Aplicar este estilo a TextInputLayout
Si desea cambiar el color de barra / línea y el color de texto de sugerencia de TextInputLayout
(lo que normalmente es el color de acento), simplemente cree este estilo:
<style name="MyStyle"> <item name="colorAccent">@color/your_color</item> </style>
A continuación, aplíquelo a su TextInputLayout
como un tema :
<android.support.design.widget.TextInputLayout ... app:theme="@style/MyStyle" />
Esto básicamente establece un tema (no estilo) a una vista (en contraposición a toda la actividad).
Añade este atributo en la etiqueta Edittext y disfruta de:
android:backgroundTint="@color/colorWhite"
- Botón Atrás y actividad refrescante previa
- Las compras en la aplicación realizadas a través de códigos promocionales devuelven la cadena de carga útil del desarrollador vacía