ログインフォームの作成中に問題が見つかりました。ユーザーが何かを正しく入力したときに、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 オブジェクトを作成および破棄することがわかりましたが、可視性を単に切り替えるだけだと思っていました。