我正在使用用户可以看到机会的 AutoCompleteTextView。因此,当我点击两个字符(例如“ba”)时,我会看到“Bahamas”、“Bahrain”、“Azerbaijan”等 - 这很有效!
但如果我没有以字母“z”开头的国家/地区,我将隐藏键盘上的 z。如果我点击两个字符“ba”,我只会在键盘上看到“h”。我怎样才能做到这一点?如果我仍然想点击“ba”并且会得到“bahamas”和“azerbaijan”,我怎么能意识到这一点?
谢谢大家!
我正在使用用户可以看到机会的 AutoCompleteTextView。因此,当我点击两个字符(例如“ba”)时,我会看到“Bahamas”、“Bahrain”、“Azerbaijan”等 - 这很有效!
但如果我没有以字母“z”开头的国家/地区,我将隐藏键盘上的 z。如果我点击两个字符“ba”,我只会在键盘上看到“h”。我怎样才能做到这一点?如果我仍然想点击“ba”并且会得到“bahamas”和“azerbaijan”,我怎么能意识到这一点?
谢谢大家!
正如 Cata 指出的那样,除非您编写自己的键盘,否则您将无法隐藏软键盘上的键 - 但是您确实有其他几个选项:
您可以在编辑文本上放置一个文本观察器,如果他们键入的键不在任何单词中,您可以将其删除
您可以使用 setKeyListener http://developer.android.com/reference/android/widget/TextView.html#setKeyListener%28android.text.method.KeyListener%29来验证他们的条目。
这两者都不会隐藏键盘上的键,但您可以使用它们来防止用户键入无效键。
至于关于将用户输入匹配到字符串中间的第二个问题,这不在自动完成的代码中:
来自android源的相关代码:
for (int i = 0; i < count; i++) {
final T value = values.get(i);
final String valueText = value.toString().toLowerCase();
// First match against the whole, non-splitted value
if (valueText.startsWith(prefixString)) {
newValues.add(value);
} else {
final String[] words = valueText.split(" ");
final int wordCount = words.length;
for (int k = 0; k < wordCount; k++) {
if (words[k].startsWith(prefixString)) {
newValues.add(value);
break;
}
}
}
}
您可以看到它只会匹配项目中任何单个单词的第一个字符。因此,要实现第二个目标,您必须编写自己的实现可过滤的适配器。
这里有一个教程可以让你开始:http: //thinkandroid.wordpress.com/2010/02/08/writing-your-own-autocompletetextview/