deviseAndroid EditText以显示错误消息,如google所述

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

在这里输入图像说明

调用onError看起来像这样:

在这里输入图像说明

注意:该应用程序正在运行SDK 19(4.4.2)

min SDK是1

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

谢谢

由于Google将TextInputLayout作为design-support-library一部分引入,因此不需要使用第三方design-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下面显示Error,你只需要在TextInputLayout上调用#setError

 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); 

要清除它,只需调用以下行:

 editText.getBackground().clearColorFilter; 

你的编辑文本应该包装在一个TextInputLayout

  <android.support.design.widget.TextInputLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tilEmail"> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress" android:ems="10" android:id="@+id/etEmail" android:hint="Email" android:layout_marginTop="10dp" /> </android.support.design.widget.TextInputLayout> 

要获得所需的错误消息,请将错误设置为文本input布局

 TextInputLayout tilEmail = (TextInputLayout) findViewById(R.id.tilEmail); if (error){ tilEmail.setError("Invalid email id"); } 

您应该添加devise支持库依赖项。 在你的gradle依赖关系中添加这一行

编译'com.android.support:design:22.2.0'

ReVerse的答案很好,但没有指出如何去除浮动错误工具提示类的东西

你需要edittext.setError(null)来删除它。
另外,正如有人指出,你不需要TextInputLayout.setErrorEnabled(true)

布局

 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter something" /> </android.support.design.widget.TextInputLayout> 

 TextInputLayout til = (TextInputLayout) editText.getParent(); til.setError("Your input is not valid..."); editText.setError(null); 

调用myTextInputLayout.setError()而不是myEditText.setError()

这些容器和容器在设置错误时具有双重function。 你需要的function是容器的function。 但是你可能需要23的最小版本。

 TextInputLayout til = (TextInputLayout)editText.getParent(); til.setErrorEnabled(true); til.setError("some error..");