EditText setError 没有留在盒子上
Posted
技术标签:
【中文标题】EditText setError 没有留在盒子上【英文标题】:EditText setError is not staying on the box 【发布时间】:2012-02-25 06:51:33 【问题描述】:这是我的设置
<EditText
android:id="@+id/inputNo"
android:layout_
android:layout_
android:hint="@string/inputHintText"
android:inputType="textCapCharacters"
android:maxLength="10"
android:textColor="#383838" />
这里是java代码
final EditText inputNo = (EditText)findViewById(R.id.inputNo);
inputNo.addTextChangedListener(new TextWatcher()
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
@Override
public void afterTextChanged(Editable s)
if (s.length() > 2)
if (!s.toString().startsWith("ABCD"))
inputNo.setError( "Must start with ABCD" );
);
代码工作正常,并在文本框中显示红色错误消息,直到击键 10 次。但是,如果用户仍然点击文本框上的第 11 个键,那么错误就会消失并且不会停留在文本框上。 一件事我意识到,在输入第 10 个输入字符后,不会调用 afterTextChanged() 方法,这意味着 addTextChangedListener 在第 10 个字符之后并没有真正监听输入键,因为我们在 EditText 中定义了 android:maxLength="10"。
如何解决这个问题?我想要的结果是,如果输入不以“ABCD”开头,则错误消息将保留在 edittext 字段中,直到用户更正为止。
任何指针/帮助表示赞赏!
【问题讨论】:
我也注意到了这一点。就我而言,EditText 值为空白是无效的。如果错误一直持续到用户输入某些内容会更直观。目前,当 EditText 没有内容并且用户点击退格键时,它就会消失。 【参考方案1】:试试这个来限制 EditText 输入:
TextView editEntryVew = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(10);
editEntryView.setFilters(filterArray );
【讨论】:
FilterArray[0] = new InputFilter.LengthFilter(10);
是什么意思?
我试过这个并从我的 xml 中删除了最大长度约束,但我仍然看到错误图标和消息在第 10 次笔划后消失。【参考方案2】:
确保在EditText
为空时处理按下的删除键:https://***.com/a/13983097/832776
【讨论】:
【参考方案3】:当用户输入的文本超过“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();
希望对你有帮助
【讨论】:
以上是关于EditText setError 没有留在盒子上的主要内容,如果未能解决你的问题,请参考以下文章
更改 EditText.setError() 背景和错误消息 android
EditText.setError()的弹出消息布局看起来很奇怪
“DataBinding”如何检查 xml 中按钮的 onClick 是不是为 editText isEmpty 和 setError