Cómo configurar TextInputLayout color de mensaje de error?

¿Cómo puedo cambiar el color del mensaje de error que se puede configurar para aparecer debajo del campo de texto en un TextInputLayout (a través de setError(...) – ver estado de error aquí )?

Normalmente se muestra como un color rojo, que quiero cambiar. ¿Qué nombres de elementos / claves debo utilizar en mi archivo styles.xml para orientar el color?

Gracias por adelantado.

Editar:

Añadido app:errorTextAppearance clave a mi TextInputLayout :

 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:id="@+id/welcome_current_week_container" app:errorTextAppearance="@style/WelcomeErrorAppearance"> <EditText ..../> </android.support.design.widget.TextInputLayout> </LinearLayout> 

Y el aspecto del error (se pone verde para la prueba) :

 <style name="WelcomeErrorAppearance" parent="@android:style/TextAppearance"> <item name="android:textColor">@android:color/holo_green_dark</item> </style> 

El resultado es que la sugerencia y el mensaje de error están coloreados (capturas de pantalla del emulador Android escalado) :

Regular (sin error):

Antes de la imagen

Estado de error:

Después de la imagen

Editar 2 / Resultado:

Cuando aparece el mensaje de error, la sugerencia sobre el campo cambia al mismo color que el mensaje de error, sobrepasando el color de la pista.

Cree un estilo personalizado que utilice @android:style/TextAppearance como padre en su archivo styles.xml :

 <style name="error_appearance" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/red_500</item> <item name="android:textSize">12sp</item> </style> 

Y utilizarlo en su widget TextInputLayout:

  <android.support.design.widget.TextInputLayout android:id="@+id/emailInputLayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:errorTextAppearance="@style/error_appearance"> 

Ejemplo de error

Editar: Establezca la sugerencia en el objeto, que está dentro de su TextInputLayout ( EditText , TextView , etc.) para mantener diferentes colores para la sugerencia y el error.

En realidad, para cambiar sólo el color del mensaje de error, puede establecer textColorError en su tema (y también establecer colorControlNormal y colorControlActivated para el widget general y el color del texto de sugerencia). TextInputLayout recoge ese atributo. NOTA: si establece errorTextAppearance en un estilo personalizado, entonces textColorError no tendrá ningún efecto.

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorControlNormal">@color/control_normal</item> <item name="colorControlActivated">@color/control_activated</item> <item name="textColorError">@color/error</item> <!-- other styles... --> </style> 

Y en tu AndroidManifest.xml:

 <application android:theme="@style/AppTheme" android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <!-- ... --> </application> 

Necesitaba hacer esto dinámicamente. Uso de la reflexión:

 public static void setErrorTextColor(TextInputLayout textInputLayout, int color) { try { Field fErrorView = TextInputLayout.class.getDeclaredField("mErrorView"); fErrorView.setAccessible(true); TextView mErrorView = (TextView) fErrorView.get(textInputLayout); Field fCurTextColor = TextView.class.getDeclaredField("mCurTextColor"); fCurTextColor.setAccessible(true); fCurTextColor.set(mErrorView, color); } catch (Exception e) { e.printStackTrace(); } } 

Necesitará llamar a textInputLayout.setErrorEnabled(true) antes de invocar el método anterior para que esto funcione.

Una versión modded de @ jared's Answer que funciona en mi caso:

 public static void setErrorTextColor(TextInputLayout textInputLayout, int color) { try { Field fErrorView = TextInputLayout.class.getDeclaredField("mErrorView"); fErrorView.setAccessible(true); TextView mErrorView = (TextView)fErrorView.get(textInputLayout); mErrorView.setTextColor(color); mErrorView.requestLayout(); } catch (Exception e) { e.printStackTrace(); } } 

Busqué en la fuente TextInputLayout y me di cuenta de que el color del texto de error se obtiene de colors.xml. Sólo tienes que añadir esto a tus colors.xml:

 <color name="design_textinput_error_color_light" tools:override="true">your hex color</color> 
  • Android TextInputLayout Cambiar contraseña no visible en la nueva biblioteca de soporte
  • Cómo cambiar el color del texto de sugerencia de textinputlayout
  • TextInputLayout La sugerencia no flotará después de actualizar la biblioteca de asistencia de Google
  • TextInputLayout: ¿Cómo dar relleno o margen para sugerir?
  • Cómo hacer que TextInputLayout asigne rojo asterisco para los campos obligatorios
  • Doble signo de exclamación en EditText setError cuando se utiliza en un campo de tipo de contraseña
  • Cómo deshabilitar flotante mientras muestra error en TextInputLayout
  • No se pudo resolver resource @ id / visible cuando se utiliza TextInputLayout
  • Sugerencia de EditText visibile while transition
  • Mostrar el texto del ayudante debajo de EditText junto con la sugerencia
  • Error al inflacionar la clase EditText al crear TextInputLayout en Android 4.4.2:
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.