TextInputLayout包含一个EditText,该EditText接收用户的输入。使用Android Design Support Library引入的TextInputLayout时,我们应该将错误设置为持有EditText的TextInputLayout,而不是EditText本身。在编写UI时,只会专注于EditText而不是整个TextInputLayout,这可能导致键盘遮盖错误。请注意以下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");
如何确保用户能够看到错误信息而无需进行操作?是否可以移动焦点?