如何隐藏错误消息提示?

时间:2017-12-13 10:49:03

标签: android android-edittext navigation-drawer android-textinputedittext error-messaging

当提交为空或无效时,我需要在edittext视图中显示错误消息。

问题是,如果用户打开导航抽屉错误消息显示在抽屉上,则此时任何edittext都有错误消息提示。

我希望导航抽屉始终打开错误消息。因此,当抽屉关闭时,用户始终会收到无效editext的错误消息。

注意:在Samsung设备(Android 7.0)中未发现此问题 在Motolenovo设备中观察到。

enter image description here

图片上方有错误信息。

enter image description here

<?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>

2 个答案:

答案 0 :(得分:4)

抽屉打开时,使用

清除焦点表单EditText
editText.clearFocus();

您已TextInputLayout,因此请尝试在TextInputLayout上设置错误。

最好在TextInputLayout

上设置错误
textInputLayout.setError("Error message");
textInputLayout.setError(null);//for remove error
textInputLayout.setErrorEnable(false); //for remove error

答案 1 :(得分:-1)

在抽屉上打开设置错误为空。

  ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar,
            R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
        @Override
        public void onDrawerClosed(View v) {
            super.onDrawerClosed(v);
        }

        @Override
        public void onDrawerOpened(View v) {
            super.onDrawerOpened(v);
            editText.setError(null);
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, 0);
        }
    };