小编典典

设计 Android EditText 以显示谷歌描述的错误消息

all

我需要一个EditText看起来像这样的onError:

在此处输入图像描述

调用 onError 看起来像这样:

在此处输入图像描述

注意:该应用在 SDK 19 (4.4.2) 上运行

最小 SDK 为 1

是否有类似于 setError 的方法可以自动执行此操作,还是我必须为其编写代码?

谢谢


阅读 55

收藏
2022-08-05

共1个答案

小编典典

由于 GoogleTextInputLayoutdesign-support-library.

以下是一个基本示例:

布局

<android.support.design.widget.TextInputLayout
    android:id="@+id/text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:errorEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your name" />

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

注意: 通过设置app:errorEnabled="true"它的属性,TextInputLayout一旦显示错误,它就不会改变它的大小 -
所以它基本上会阻塞空间。

代码

为了在下面显示错误,EditText您只需调用(不在孩子上#setError):TextInputLayout``EditText

TextInputLayout til = (TextInputLayout) findViewById(R.id.text_input_layout);
til.setError("You need to enter a name");

结果

图片显示带有错误消息的编辑文本

要隐藏错误并重置色调,只需调用til.setError(null).


笔记

为了使用,TextInputLayout您必须将以下内容添加到您的build.gradle依赖项中:

dependencies {
    compile 'com.android.support:design:25.1.0'
}

设置自定义颜色

默认情况下,该EditText行将是红色的。如果您需要显示不同的颜色,您可以在调用后立即使用以下代码setError

editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);

要清除它,只需调用clearColorFilter函数,如下所示:

editText.getBackground().clearColorFilter();
2022-08-05