TextInputLayout には、ユーザーからの入力を受け取る EditText が含まれています。Android Design Support Library で導入された TextInputLayout では、EditText 自体ではなく、EditText を保持している TextInputLayout にエラーを設定する必要があります。UI を記述する場合、TextInputLayout 全体ではなく、EditText のみに焦点が当てられるため、キーボードがエラーをカバーする可能性があります。次の GIF では、エラー メッセージを表示するには、まずユーザーがキーボードを取り外す必要があることに注意してください。これと、キーボードを使用して先に進むように IME アクションを設定することを組み合わせると、非常に紛らわしい結果になります。
レイアウト xml コード:
<android.support.design.widget.TextInputLayout
android:id="@+id/uid_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
android:layout_marginTop="8dp">
<EditText
android:id="@+id/uid_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="Cardnumber"
android:imeOptions="actionDone"/>
</android.support.design.widget.TextInputLayout>
エラーを TextInputLayout に設定する Java コード:
uidTextInputLayout.setError("Incorrect cardnumber");
ユーザーが操作を行わなくても、エラー メッセージが確実に表示されるようにするにはどうすればよいですか? フォーカスを移動することはできますか?