androidandroid-textinputlayout

How to set TextInputLayout error message colour?


How can I change the colour of the error message that can be set to appear below the text field in a TextInputLayout (via setError(...)see error state here)?

It normally shows as a red colour, which I want to change. Which item names/keys should I use in my styles.xml file to target the colour?


**Edit:**

Added app:errorTextAppearance key to my 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>

and the error appearance (set to green for testing):

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

The result is that the hint as well as the error message is coloured (screenshots from scaled Android Emulator):

Regular (no error):

Before Image

Error state:

After Image

Edit 2/Outcome:

When the error message appears, the hint above the field changes to the same colour as the error message, overriding hint colour – this is by design.


Solution

  • Create a custom style which uses @android:style/TextAppearance as parent in your styles.xml file:

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

    And use it in your TextInputLayout widget:

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

    error example

    Edit: Set the hint on the object, which is inside your TextInputLayout (EditText, TextView, etc.) to hold different colors for the hint and the error.