Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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编辑文本中?_Android_Android Edittext - Fatal编程技术网

是否可以禁用;“周期”的双击;在Android编辑文本中?

是否可以禁用;“周期”的双击;在Android编辑文本中?,android,android-edittext,Android,Android Edittext,它弄乱了我的编辑文本过滤器。当我双击空格时,上一个字符将被删除。这是我的过滤器: @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (!isValid(source)) { // This simple calls Matcher.matches return "

它弄乱了我的编辑文本过滤器。当我双击空格时,上一个字符将被删除。这是我的过滤器:

@Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (!isValid(source)) { // This simple calls Matcher.matches
            return "";
        }

        return null;
    }
当我双击空格键时,将使用以下来源调用过滤器三次:

  • 带空间源的源(“”)
  • 空源(“”)(类似于退格)-->此源删除最后一个字符
  • A.“来源”
  • 我试着只保留最后一个字符:

    if(source.toString().isEmpty()) {
                return ((Character) dest.toString().charAt(dest.toString().length()-1)).toString();
            }
    

    它解决了这个问题,但我不能再退格了,因为这是一个解决办法。是否有一种方法可以仅针对此单个EditText禁用“双击句点空格”功能?我注意到Google Chrome应用程序中的地址栏似乎禁用了此功能,只将双击的空格视为两个空格。

    在我的情况下,我的输入只是一行字段。我只需将inputType设置为textVisiblePassword:

    android:inputType="textVisiblePassword"
    

    这也会处理我的规范,以禁用建议/字典。但是,我想看看是否有其他方法可以做到这一点,因为其他人可能需要建议/字典,只想禁用双击句点功能。欢迎提供更多答案。

    主要的黑客攻击,但如果您在输入过滤器中的文本中不允许使用空格或句点,则此操作有效:-)

    然后为输入过滤器的其余部分添加所需的内容

    我们真的应该有一个inputType来禁用自动同步:-(

            private char prevLastChar;
    
        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
    
            boolean isAutoPeriod = StringUtils.eq(source.toString(), ". ");
            if (!isAutoPeriod && (dstart == dend) && (dend == dest.length()) && (dest.length() > 0)) {
                prevLastChar = dest.charAt(dest.length()-1);
            }
            if (isAutoPeriod && (dstart == dend) && (dend == dest.length())) {
                if (source instanceof SpannableStringBuilder) {
                    return SpannableStringBuilder.valueOf(Character.toString(prevLastChar));
                } else {
                    return Character.toString(prevLastChar);
                }
            }