当用户在第一次尝试时输入正确的值然后很好,但是当用户在edittext中设置错误后给出正确的输入时 使用textinputlayout然后editText的整个背景变黑并且设置错误时背景变为红色,而在焦点和输入类型正确时背景变为 colorAccent (工作室中的默认颜色名称)< / p>
的 XML
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<EditText
android:id="@+id/reservation_email_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="20dp"
android:background="@drawable/reservation_edit_text_drawable"
android:hint="Email"
android:inputType="textWebEmailAddress"
android:paddingLeft="10dp" />
</android.support.design.widget.TextInputLayout>
码
private boolean validateEmail() {
String email = etEmail.getText().toString().trim();
if (email.isEmpty() || !isValidEmail(email)) {
ipEmail.setError("Enter valid email address");
return false;
} else {
ipEmail.setErrorEnabled(false);
}
return true;
}
reservation_edit_text_drawable.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/red_border" />
<item android:drawable="@drawable/normal_border" />
</selector>
red_border.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<padding android:top="5dp"/>
<stroke android:width="1dp"
android:color="#CC1F26" />
<size android:height="48dp"/>
</shape>
normal_border.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke android:width="1dp"
android:color="@color/disabled_color" />
<size android:height="48dp"
/>
</shape>
基本应用主题默认
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
截图
答案 0 :(得分:8)
使用自定义xml作为edittext背景时遇到了同样的问题。
删除它对我有用。
尝试删除行android:background="@drawable/reservation_edit_text_drawable"
答案 1 :(得分:1)
TextInputLayout
存在一些已经发布的错误。
请参阅这些链接
答案 2 :(得分:1)
而不是设置Error为什么不使用Toast Message。我遇到了同样的问题所以我尝试了Toast Message。为此尝试下面的一些事情
- &GT;当用户单击“第二个字段”时,请先检查“编辑文本”是否正确填充。如果是,那么只有用户可以在第二个字段中输入数据,否则不会。