dab*_*248 11 layout android textview android-textinputlayout
我在创建登录表单时发现了一个问题.我在TextInputLayout上显示一些错误并在用户正确填写内容时禁用它们.
我设置它
mTextInputLayout.setError("This field is required");
Run Code Online (Sandbox Code Playgroud)
并使用
mTextInputLayout.setError(null);
Run Code Online (Sandbox Code Playgroud)
问题是仍然有空TextView对象的填充,它显示错误消息.所以我试图通过设置完全禁用错误
mTextInputLayout.setErrorEnabled(false);
Run Code Online (Sandbox Code Playgroud)
它工作和看起来很好,但我不能再设置它.打电话的时候
mTextInputLayout.setErrorEnabled(true);
mTextInputLayout.setError("This field is required");
Run Code Online (Sandbox Code Playgroud)
再次,我只看到一个读取行,而不是错误消息,所以似乎显示错误消息的TextView被销毁,而不是再次创建.
我在这里读到,TextView对象被破坏,setErrorEnabled(false)被调用时它似乎不再被创建.错误或功能?
此控件的源代码尚未在AOSP中提供,因此我使用内置于Android Studio的反编译器来检查代码以了解出现了什么问题.我发现setErrorEnabled()实际上创建并销毁了TextView对象,而我希望它只是切换可见性.
dab*_*248 10
如果有人遇到同样的问题,我发现一个工作正常的解决方法.只需设置错误TextView对象的可见性打开和关闭,不要破坏对象.
使用此选项启用错误消息:
if (textInputLayout.getChildCount() == 2)
textInputLayout.getChildAt(1).setVisibility(View.VISIBLE);
textInputLayout.setError("This field is required");
Run Code Online (Sandbox Code Playgroud)
这用于禁用错误消息:
textInputLayout.setError(null);
if (textInputLayout.getChildCount() == 2)
textInputLayout.getChildAt(1).setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |