使用AutoCompleteTextView但隐藏键盘上的字符

时间:2011-05-27 08:12:39

标签: android autocomplete keyboard keyboard-events autocompletetextview

我正在使用AutoCompleteTextView,用户可以看到机会。 所以当我点击两个字符时,例如“ba”我会看到“巴哈马”,“巴林”,“阿塞拜疆”等 - 这都有效!

但如果我没有以字母“z”开头的国家,我会隐藏键盘上的z。如果我点击两个字符“ba”,我只会在键盘上看到“h”。 我怎样才能做到这一点?如果我仍想点击“ba”并获得“巴哈马”和“阿塞拜疆”,我怎么才能意识到呢?

谢谢大家!

1 个答案:

答案 0 :(得分: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/