我正在使用AutoCompleteTextView,退格按钮的默认行为是这样的。
假设我输入“Ar”,这给了我一个建议“阿根廷”,我从下拉菜单中选择“阿根廷”......文本现在变为“阿根廷”。但是说我需要删除最后一个字符,所以我按下键盘上的退格键,AutcompleteTextView删除所有文本,直到我输入的点(即文本现在再次变为“Ar”)。
如何消除此行为并让AutoComplete中的文本正常运行?
起初我以为它是某种SpannableString所以我称之为“clearSpans()”,但它似乎不起作用。有什么指针吗?
提前致谢。 :)
答案 0 :(得分:1)
我认为您使用添加MultiAutoCompleteTextView
的{{1}}。
如果你使用
setTokenizer(new SpaceTokenizer())
代替AutoCompleteTextView
并删除MultiAutoCompleteTextView
问题就会消失。
答案 1 :(得分:0)
我没有找到任何解决方案,但最终我发现,这段代码对我有用:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
// removing QwertyKeyListener.Replaced span
Editable text = editText.getText();
Object[] spans = text.getSpans(0, text.length(), Object.class);
if (spans != null) {
for (int i = spans.length - 1; i >= 0; i--) {
Object o = spans[i];
String desc = "" + o; // This is a hack, not a perfect solution, but works. "QwertyKeyListener.Replaced" is a private type
if (desc.indexOf("QwertyKeyListener$Replaced") != -1) {
text.removeSpan(o);
}
}
}
} catch (Throwable e) {
MyUtil.msgError(e);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});