我使用setError()
来显示验证错误。在一种情况下,字段靠近屏幕的左侧,当出现错误消息时,它在视觉上指向错误的EditText
字段 - 而不是指向显示1234的字段,它应该指向左侧的空白字段,请参见附件截图。有谁知道解决这个问题?谢谢!
截图是在运行 Android 4.4.2。
的Galaxy 3手机上拍摄的
答案 0 :(得分:1)
我有一个解决方法,添加\ n来格式化消息并减少每行的宽度:
text1.setError("this field must\nbe 1 character\nin length");
答案 1 :(得分:0)
这是您的问题的解决方案.. 试试这个..
EditText edt1=(EditText) findViewById(R.id.editText2);
EditText edt2=(EditText) findViewById(R.id.editText3);
EditText edt3=(EditText) findViewById(R.id.editText1);
// Reset errors.
edt1.setError(null);
edt2.setError(null);
edt3.setError(null);
String txt3 = edt3.getText().toString().trim();
String txt1 = edt1.getText().toString().trim();
String txt2=edt2.getText().toString().trim();
boolean cancel = false;
View focusView = null;
if (TextUtils.isEmpty(txt3)) {
edt3.setError(getString(R.string.error_field_required));
focusView = edt3;
cancel = true;
}
if (TextUtils.isEmpty(txt2)) {
edt2.setError(getString(R.string.error_field_required));
focusView = edt2;
cancel = true;
}
if (TextUtils.isEmpty(txt1)) {
edt1.setError(getString(R.string.error_field_required));
focusView = edt1;
cancel = true;
}
if (cancel) {
focusView.requestFocus();
} else {
//do the operations you want do here
}