Как скрыть сообщение об ошибке?

Мне нужно отобразить сообщение об ошибке в представлении edittext, когда поле пусто или недействительно.

Проблема заключается в том, что у любого edittext появляется сообщение об ошибке в то время, когда пользователь открывает сообщение об ошибке ящика навигации, которое появляется над ящиком.

Я хочу, чтобы навигационный ящик всегда открывался над сообщением об ошибке. Поэтому, когда ящик закрывается, у пользователя всегда появляется сообщение об ошибке для недопустимого editext.

Примечание. Эта проблема не наблюдается на Samsung устройстве (Android 7.0). Наблюдается на Moto и lenovo устройствах.

введите здесь описание изображения

Изображения с сообщением об ошибке над ящиком.

введите здесь описание изображения

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="@dimen/padding_eextra_wide"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/padding_eextra_wide">

        <TextView
            android:id="@+id/tv_title"
            style="@style/Text.Medium"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:inputType="textMultiLine"
            android:text="@string/title_add_care_recipient"
            android:textSize="@dimen/font_16pt"/>

        <TextView
            android:id="@+id/tv_sub_title"
            style="@style/Text.Medium"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="@dimen/padding_20dp"
            android:layout_marginRight="@dimen/padding_20dp"
            android:gravity="center_horizontal"
            android:inputType="textMultiLine"
            android:lineSpacingMultiplier="1.2"
            android:text="@string/sub_title_add_care_recipient"
            android:textSize="@dimen/font_14pt"/>

        <android.support.design.widget.TextInputLayout
            style="@style/MaterialDesignTextInputLayout"
            android:layout_marginTop="@dimen/padding">

            <EditText
                android:id="@+id/et_first_name"
                style="@style/EditText.Medium.Mandatory"
                android:hint="@string/hint_first_name"
                android:maxLength="50"/>
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            style="@style/MaterialDesignTextInputLayout">

            <EditText
                android:id="@+id/et_last_name"
                style="@style/EditText.Medium.Mandatory"
                android:hint="@string/hint_last_name"
                android:maxLength="50"/>
        </android.support.design.widget.TextInputLayout>

            <Button
                android:id="@+id/btn_next"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="@dimen/padding"
                android:background="@color/orange"
                android:textAllCaps="true"
                android:text="@string/text_save"/>

    </LinearLayout>

</ScrollView>

comment
поделитесь своим макетом xml   -  person Malik Motani    schedule 13.12.2017
comment
Рекомендуется устанавливать ошибку TextInputLayout, а не EditText, см. это   -  person Malik Motani    schedule 13.12.2017
comment
добавить editText.clearFocus(); в метод onDrawerOpen   -  person Abhishek Singh    schedule 13.12.2017


Ответы (1)


Когда ваш откроется ящик, очистите форму Focus EditText, используя

editText.clearFocus();

ИЛИ

У вас есть TextInputLayout, поэтому попробуйте установить Error на TextInputLayout.

И лучше ставить ошибку на TextInputLayout

textInputLayout.setError("Error message");
textInputLayout.setError(null);//for remove error
textInputLayout.setErrorEnable(false); //for remove error
person ND1010_    schedule 13.12.2017
comment
Это может быть последний вариант решения этой проблемы. Но у меня есть 4 вкладки внизу, и все они содержат 3-4 поля редактирования текста. - person pratik03; 13.12.2017
comment
да, но я видел ваш код xml, вы будете использовать android.support.design.widget.TextInputLayout, поэтому лучше использовать метод TextInputLayout.setError() - person ND1010_; 13.12.2017