Android EditText setError未保留在框中
这是我的设置Android EditText setError未保留在框中,android,android-widget,android-edittext,Android,Android Widget,Android Edittext,这是我的设置 <EditText android:id="@+id/inputNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/inputHintText" android:inputType="textCapCharacte
<EditText
android:id="@+id/inputNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/inputHintText"
android:inputType="textCapCharacters"
android:maxLength="10"
android:textColor="#383838" />
代码工作正常,并在文本框中显示红色错误消息,直到按键10。但是假设用户仍然点击文本框上的第11个键,那么错误就会消失,而不会停留在文本框上。
有一点我意识到,在输入第10个输入字符后,不会调用afterTextChanged()方法,这意味着addTextChangedListener不会真正侦听第10个字符后的输入键,因为我们在EditText中定义了android:maxLength=“10”
如何解决这个问题?我期望的结果是,如果输入不是以“ABCD”开头,则错误消息将保留在edittext字段中,直到用户更正它
感谢您的指点/帮助 尝试此操作以限制编辑文本输入:
TextView editEntryVew = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(10);
editEntryView.setFilters(filterArray );
确保在
EditText
为空时处理按下的delete键:当用户输入的文本超过“maxLength”或删除空字段时,会出现问题。这似乎是一个操作系统错误,我尝试了很多方法,最终找到了如下解决方法:
假设您有许多文本字段和一个提交按钮,当用户按提交时,用自己的文本重置这些文本字段以再次触发验证,例如:
textField1.setText(textField1.getText())
textField2.setText(textField2.getText())
if (TextUtils.isEmpty(textField1.getError()) && TextUtils.isEmpty(textField2.getError()))
// submit
else
Toast.makeText(mContext, "Please correct invalid fields", Toast.LENGTH_SHORT).show();
我希望这有帮助你所说的
filterary[0]=newInputFilter.LengthFilter(10)是什么意思代码>?我尝试了这一点,并从xml中删除了最大长度约束,但我仍然看到错误图标和消息在第10次笔划后消失。我也注意到了这一点。在我的例子中,EditText值为空是无效的。如果错误一直持续到用户键入某个内容,则更直观。目前,当EditText没有内容并且用户点击backspace时,它就会消失。
textField1.setText(textField1.getText())
textField2.setText(textField2.getText())
if (TextUtils.isEmpty(textField1.getError()) && TextUtils.isEmpty(textField2.getError()))
// submit
else
Toast.makeText(mContext, "Please correct invalid fields", Toast.LENGTH_SHORT).show();