我的应用程序中有一个简单的验证,这里我使用了四个EdtiText
.我显示错误时EditTex
不会失去焦点,但问题在于失去焦点EditText
只显示图标,没有错误消息。我尝试过使用requestFocus()
方法,现在可以看到错误,但问题是..现在我的表单显示两个光标,即使第一个字段无效并显示错误,我输入的任何内容都会进入第二个字段EdtiText
。有人能帮我解决这个问题吗?
谢谢。
这是我的 xml 文件 -
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="first name"
android:id="@+id/edt_first_name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="last name"
android:id="@+id/edt_last_name"
android:singleLine="true"
android:layout_below="@+id/edt_first_name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="email"
android:singleLine="true"
android:id="@+id/edt_email"
android:layout_below="@+id/edt_last_name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="password"
android:singleLine="true"
android:imeOptions="actionNext"
android:id="@+id/edt_password"
android:layout_below="@+id/edt_email"/>
这是我正在检查的主文件验证.
firstname.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
if (!Validate(firstname.getText().toString())) {
} else {
firstname.setFocusable(true);
firstname.setError("not valid");
}
}else{
firstname.setError(null);
}
}
});
Use TextInputLayout
对于材料EditText
like :
<android.support.design.widget.TextInputLayout
android:id="@+id/input_application_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:minHeight="50dp"
android:theme="@style/MyTextInputLayout"
app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout">
<EditText
android:id="@+id/application_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_application_name"
android:imeOptions="actionNext"
android:inputType="text" />
</android.support.design.widget.TextInputLayout>
并在你的Activity
TextInputLayout til = (TextInputLayout) findViewById(R.id.input_application_name);
EditText applicationNameEdt = (EditText) findViewById(R.id.application_name);
til.setErrorEnabled(true);
til.setError("You need to enter a name");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)