Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用AutoCompleteTextView,但隐藏键盘上的字符_Android_Autocomplete_Keyboard_Keyboard Events_Autocompletetextview - Fatal编程技术网

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

Android 使用AutoCompleteTextView,但隐藏键盘上的字符,android,autocomplete,keyboard,keyboard-events,autocompletetextview,Android,Autocomplete,Keyboard,Keyboard Events,Autocompletetextview,我使用的是AutoCompleteTextView,用户可以看到机会。 因此,当我点击两个字符,例如巴,我会看到巴哈马,巴林,阿塞拜疆等-这工作 但是如果我没有以字母z开头的国家,我会在键盘上隐藏z。如果我点击两个字符ba,我只会在键盘上看到h。 我该怎么做?如果我还想攻打巴哈马和阿塞拜疆,我怎么能实现呢 谢谢大家 正如Cata所指出的,除非你自己编写键盘,否则你将无法隐藏软键盘上的键-不过你还有几个其他选择: 你可以在编辑文本的页面上放置一个文本观察者,如果他们键入的关键字不在任何单词中,你可

我使用的是AutoCompleteTextView,用户可以看到机会。 因此,当我点击两个字符,例如巴,我会看到巴哈马,巴林,阿塞拜疆等-这工作

但是如果我没有以字母z开头的国家,我会在键盘上隐藏z。如果我点击两个字符ba,我只会在键盘上看到h。 我该怎么做?如果我还想攻打巴哈马和阿塞拜疆,我怎么能实现呢


谢谢大家

正如Cata所指出的,除非你自己编写键盘,否则你将无法隐藏软键盘上的键-不过你还有几个其他选择:

你可以在编辑文本的页面上放置一个文本观察者,如果他们键入的关键字不在任何单词中,你可以将其删除

您可以使用setKeyListener来检查和验证它们的条目

这两种方法都不会在键盘上隐藏键,但您可以使用它们来防止用户键入无效键

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

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;
                    }
                }
            }
        }
您可以看到,它将只匹配项目中任何单个单词的前几个字符。因此,为了实现第二个目标,您必须编写自己的适配器来实现filterable


这里有一个教程可以让你开始学习:

我认为只有你自己制作软键盘并为其制作这样的方法,你才能做到这一点……仍然有一个问题。。。我想使用setkeylistener如何从edittext中找到我的输入?