我有一个类似的问题。我必须在第 5 个字符、第 11 个等之后附加“-”。当我想删除“-”时,它忽略了删除键,所以我所做的如下。
创建了两个变量:beforeCharCounter 和 charCounter,在 onTextChanged 中我将它们的值设置为 before 和 count。
activationKeyEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
beforeCharCounter = before;
charCounter = count;
System.out.println(count);
}
@Override
public void afterTextChanged(Editable s) {
if ((s.length() == 5 && beforeCharCounter <= 5 && charCounter == 5) ||
(s.length() == 11 && beforeCharCounter <= 11 && charCounter == 11)
|| (s.length() == 17 && beforeCharCounter <= 17 && charCounter == 17)) {
s.append('-');
}
}
});
如果之前的值大于长度,那么确定它是删除的,这将解决删除问题。当用户输入 10 个字符并按下第 5 个字符时使用计数。如果我们不保留确切的计数破折号将疯狂地附加在末尾。
希望这将帮助您解决问题。