gpt4 book ai didi

android - EditText setError 没有停留在盒子上

转载 作者:太空狗 更新时间:2023-10-29 15:19:42 25 4
gpt4 key购买 nike

这是我的设置

<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" />

这是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 输入:

TextView editEntryVew = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(10);
editEntryView.setFilters(filterArray );

关于android - EditText setError 没有停留在盒子上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com