Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - How to remove exclamation mark of setError()

Password field part of my xml code:

<android.support.percent.PercentRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
...

    <android.support.design.widget.TextInputLayout
        android:layout_below="@+id/uname_ly"
        android:id="@+id/text_input_layout_passwd"
        app:layout_widthPercent="70%"
        android:layout_centerHorizontal="true"
        app:layout_heightPercent="10%"
        app:layout_marginTopPercent="0%"
        app:layout_marginBottomPercent="0%"
        android:adjustViewBounds="true"
        android:textColorHint="@color/editTextHintColor"
        app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
        >

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/nopasswd"
            android:inputType="textPassword"
            android:maxLines="1"
            android:textColor="@color/editTextTextColor" />

    </android.support.design.widget.TextInputLayout>
...

How to i remove this overlay red exclamation mark when call setError() ? enter image description here

[Update the style]

<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/editTextHintColor</item>
</style>
like image 358
林果皞 Avatar asked Oct 20 '16 11:10

林果皞


2 Answers

Use setError(CharSequence error, Drawable icon) method. Set the drawable as null:

editText.setError("Pls provide email", null);
like image 110
Srijith Avatar answered Sep 19 '22 02:09

Srijith


TextInputLayout is now part of the new material package. Here is an update on how I got a password field with validation working:

Layout:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/loginPasswordInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/grid"
    android:hint="@string/onboarding_hint_password"
    app:errorEnabled="true"
    app:passwordToggleContentDescription="@string/onboarding_toggle_description_password"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="?colorAccent">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/loginPasswordInputText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="start|center"
        android:inputType="textPassword"
        android:lines="1"
        tools:text="@string/onboarding_hint_password" />
</com.google.android.material.textfield.TextInputLayout>

Setting the error message and hiding the icon in code can then be achieved with the following:

loginPasswordInputLayout.error = errorMessage
// Error icon overlaps with password visibility toggle, so remove it:
loginPasswordInputLayout.setErrorIconDrawable(0)

This way you get the red (or colour of your choice) text and underline, but the password visibility toggle icon stays fully accessible.

like image 21
sunadorer Avatar answered Sep 21 '22 02:09

sunadorer