0

我正在使用用户可以看到机会的 AutoCompleteTextView。因此,当我点击两个字符(例如“ba”)时,我会看到“Bahamas”、“Bahrain”、“Azerbaijan”等 - 这很有效!

但如果我没有以字母“z”开头的国家/地区,我将隐藏键盘上的 z。如果我点击两个字符“ba”,我只会在键盘上看到“h”。我怎样才能做到这一点?如果我仍然想点击“ba”并且会得到“bahamas”和“azerbaijan”,我怎么能意识到这一点?

谢谢大家!

4

1 回答 1

0

正如 Cata 指出的那样,除非您编写自己的键盘,否则您将无法隐藏软键盘上的键 - 但是您确实有其他几个选项:

这两者都不会隐藏键盘上的键,但您可以使用它们来防止用户键入无效键。

至于关于将用户输入匹配到字符串中间的第二个问题,这不在自动完成的代码中:

来自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/

于 2011-05-27T09:58:11.247 回答