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