style - textinputlayout in android example
Cómo cambiar el color de la etiqueta flotante de TextInputLayout (18)
Ahora, simplemente usando
colorAccent
y
colorPrimary
funcionará perfectamente.
Con referencia al nuevo
TextInputLayout
lanzado por Google, ¿cómo cambio el color del texto de la etiqueta flotante?
Establecer
colorControlNormal
,
colorControlActivated
,
colorControlHighLight
en estilos no ayuda.
Esto es lo que tengo ahora:
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"
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:
<style name="TextLabel" parent="Widget.Design.TextInputLayout">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/Color Name</item>
<item name="android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/Color Name</item>
<item name="colorControlNormal">@color/Color Name</item>
<item name="colorControlActivated">@color/Color Name</item>
</style>
En mi caso, agregué esta "
app:hintTextAppearance="@color/colorPrimaryDark"
en mi widget TextInputLayout.
Encontró la respuesta, use el atributo
android.support.design:hintTextAppearance
para configurar su propia apariencia de etiqueta flotante.
Ejemplo:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:hintTextAppearance="@style/TextAppearance.AppCompat">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"/>
</android.support.design.widget.TextInputLayout>
Está funcionando para mí ... agregue color de pista en TextInputLayout
<android.support.design.widget.TextInputLayout
android:textColorHint="#ffffff"
android:id="@+id/input_layout_password"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/edtTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="Password"
android:inputType="textPassword"
android:singleLine="true"
/>
</android.support.design.widget.TextInputLayout>
Intenté usar android: textColorHint en android.support.design.widget.TextInputLayout funciona bien.
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/colorAccent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Hello"
android:imeActionLabel="Hello"
android:imeOptions="actionUnspecified"
android:maxLines="1"
android:singleLine="true"/>
</android.support.design.widget.TextInputLayout>
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:
<style name="MyTextInputLayout" parent="MyAppThemeBase">
<item name="colorAccent">@color/colorPrimary</item>
</style>
<android.support.design.widget.TextInputLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:theme="@style/MyTextInputLayout">
No necesita usar
android:theme="@style/TextInputLayoutTheme"
para cambiar el color de la etiqueta flotante, ya que afectará a todo el tema para el pequeño TextView utilizado como etiqueta.
En su lugar, puede usar la
app:hintTextAppearance="@style/TextInputLayout.HintText"
donde:
<style name="TextInputLayout.HintText">
<item name="android:textColor">?attr/colorPrimary</item>
<item name="android:textSize">@dimen/text_tiny_size</item>
...
</style>
Avíseme si la solución funciona :-)
Ok, entonces, esta respuesta me pareció 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 widget
EditText
con la
app:errorEnabled="true"
y esta sola línea me hizo la vida difícil.
parece que esto anula el tema que elegí para
android.support.design.widget.TextInputLayout
, que tiene un color de texto diferente definido por
android:textColorPrimary
.
Al final, decidí aplicar un color de texto directamente al widget
EditText
.
Mi código se parece a esto:
styles.xml
<item name="colorPrimary">@color/my_yellow</item>
<item name="colorPrimaryDark">@color/my_yellow_dark</item>
<item name="colorAccent">@color/my_yellow_dark</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@color/dark_gray</item>
<item name="android:windowBackground">@color/light_gray</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:textColorHint">@color/dark_gray</item>
<item name="android:colorControlNormal">@android:color/black</item>
<item name="android:colorControlActivated">@android:color/white</item>
Y mi widget:
<android.support.design.widget.TextInputLayout
android:id="@+id/log_in_layout_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true">
<EditText
android:id="@+id/log_in_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="@android:color/black"
android:ems="10"
android:hint="@string/log_in_name"
android:inputType="textPersonName" />
</android.support.design.widget.TextInputLayout>
Ahora muestra el color del texto negro en lugar del
textColorPrimary
blanco.
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 tinte 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
<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorControlActivated">#e91e63</item>
<item name="android:colorForeground">#33691e</item>
<item name="colorControlNormal">#f57f17</item>
<item name="android:textColorSecondary">#673ab7</item>
</style>
Yo resuelvo el problema. Este es el diseño :
<android.support.design.widget.TextInputLayout
android:id="@+id/til_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username"
>
<android.support.v7.widget.AppCompatEditText android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
/>
</android.support.design.widget.TextInputLayout>
Este es el estilo:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="colorAccent">@color/pink</item>
<item name="colorControlNormal">@color/purple</item>
<item name="colorControlActivated">@color/yellow</item>
</style>
Debe usar su tema en la aplicación:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
deberías cambiar tu color aquí
<style name="Base.Theme.DesignDemo" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#673AB7</item>
<item name="colorPrimaryDark">#512DA8</item>
<item name="colorAccent">#FF4081</item>
<item name="android:windowBackground">@color/window_background</item>
</style>
para cambiar el color de la etiqueta de texto cuando se está enfocando en ella. es decir, escribir en él. tienes que agregar especificar
<item name="android:textColorPrimary">@color/yourcolorhere</item>
Solo una nota: debe agregar todas estas implementaciones a su tema principal.
Pruebe el siguiente código: funciona en estado normal
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabel">
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Hiiiii"
android:id="@+id/edit_id"/>
</android.support.design.widget.TextInputLayout>
En la carpeta de estilos TextLabel Code
<style name="TextLabel" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/Color Name</item>
<item name="android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/Color Name</item>
<item name="colorControlNormal">@color/Color Name</item>
<item name="colorControlActivated">@color/Color Name</item>
</style>
Establecer como tema principal de la aplicación, solo funciona Resaltar estado solamente
<item name="colorAccent">@color/Color Name</item>
Actualizar:
UnsupportedOperationException: no se puede convertir a color: tipo = 0x2 en la API 16 o inferior
Solution
<style name="AppTheme2" parent="AppTheme">
<!-- Customize your theme here. -->
<item name="colorControlNormal">#fff</item>
<item name="colorControlActivated">#fff</item></style>
agregue esto a los estilos y configure TextInputLayout Theam en App2 y funcionará;)
<com.google.android.material.textfield.TextInputLayout
android:hint="Hint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextInputLayoutHint">
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:paddingTop="@dimen/_5sdp"
android:paddingBottom="@dimen/_5sdp"
android:textColor="#000000"
android:textColorHint="#959aa6" />
</com.google.android.material.textfield.TextInputLayout>
res / values / styles.xml
<style name="TextInputLayoutHint" parent="">
<item name="android:textColorHint">#545454</item>
<item name="colorControlActivated">#2dbc99</item>
<item name="android:textSize">11sp</item>
</style>
<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/red</item>
<item name="android:textSize">14sp</item>
</style>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/gray" //support 23.0.0
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" >
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint" />
</android.support.design.widget.TextInputLayout>