【发布时间】:2016-01-18 18:09:35
【问题描述】:
我在创建登录表单时发现了一个问题。当用户正确填写内容时,我会在 TextInputLayout 上显示一些错误并禁用它们。
我用
设置mTextInputLayout.setError("This field is required");
并用
禁用它mTextInputLayout.setError(null);
问题是空的 TextView 对象仍有填充,显示错误消息。所以我尝试通过设置完全禁用错误
mTextInputLayout.setErrorEnabled(false);
它可以工作并且看起来很好,但是我无法再次设置它。调用时
mTextInputLayout.setErrorEnabled(true);
mTextInputLayout.setError("This field is required");
再次,我只看到一条读取行,而不是错误消息,因此显示错误消息的 TextView 似乎已被破坏并且没有再次创建。
我读到here,当调用setErrorEnabled(false) 时,TextView 对象被破坏,并且似乎没有再次创建它。错误或功能?
此控件的源代码在 AOSP 中尚不可用,因此我使用 Android Studio 内置的反编译器检查代码以了解问题所在。我发现 setErrorEnabled() 实际上创建和销毁了一个 TextView 对象,而我期望它只是简单地切换可见性。
【问题讨论】:
标签: android layout textview android-textinputlayout