也许这对你来说不是那么难,但我需要一些帮助。我有和editText显示长度为6位的代码。例如“292000”,“123000”等...
我在editText中有这个信息我希望用户只能删除最后2位数字来放置他们自己的号码(他们只能改变最后两位数字)。例如“292020”“123001”。
我正在使用textwatchers但我不能在其中使用setText,因为我会收到stackoverflow错误。任何帮助都将受到如此赞赏。
codArt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(codArt.getSelectionStart() < 5) {
codArt.setText(charSequence);
codArt.setSelection(5);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
答案 0 :(得分:1)
从onTextChanged()方法中删除代码并尝试如下...
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if (s.length() == 4 && after == 0) {
codArt.removeTextChangedListener(this);
codArt.setText(s);
codArt.setSelection(s.length());
codArt.addTextChangedListener(this);
}
}
答案 1 :(得分:0)
尝试使用带有seteditable set的textview为true。将最小字符设置为“n”并将最后的“k”字符保持为可编辑状态。自定义textview可以解决这个问题