我有一个带有EditText的TextInputLayout.
这是我的xml:
我的java代码:
((TextInputLayout) findViewById(R.id.textInputLayout)).setError("ERROR");
当我调用setError("ERROR")时,标签(提示)颜色和EditText的底线颜色变为红色并出现错误.这是我期望的行为.
现在让我们说在销毁我的活动之前我不会调用setError(null).现在我再次打开相同的活动.我可以看到我的应用程序里面的所有EditText字段的底线都是红色的,虽然标签颜色似乎被重置并且错误消息被取消.这并不总是可重复的,但如果我继续尝试,我最终可以得到它.
我正在使用带有5.1.1的Nexus 4.
难道我做错了什么?
这是由于AppCompat库中的错误.
问题190829:TextInputLayout setError导致应用程序中的所有TIL都带有红色下划线
elyess.a ... @ gmail.com报告,2015年10月19日使用设计支持库23.1.0
重现问题的步骤(如果适用,包括示例代码).
一个TIL上的SetError(即表单中)
TIL有一个红色下划线(ok)
向后导航并再次输入活动.或者使用TIL转到另一个活动.
发生了什么.
即使在其他活动中,所有TIL都有一个红色下划线.(但没有错误文本).
只有在强行关闭应用程序后,红色下划线才会消失.
另据报道:
问题190355:TextInputLayout setError()在清除后不会显示错误
问题状态已更改为FutureRelease
2015年11月11日,因此我们希望很快能够解决问题.
与此同时,似乎有3种解决方法:
用库的v23.0.1编译
但这引入了一个类似的问题,其中错误行没有重置
EditText
在布局顶部添加一个不可见的内容
首先运行以下代码 EditText
editText.setBackground(editText.getBackground().getConstantState().newDrawable())