Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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 解释这些标志(SPAN_组合、SPAN_用户等)的定义_Android_Html - Fatal编程技术网

Android 解释这些标志(SPAN_组合、SPAN_用户等)的定义

Android 解释这些标志(SPAN_组合、SPAN_用户等)的定义,android,html,Android,Html,有人能对Android的跨Java接口中的标志给出清晰的解释吗?是不清楚,我需要更多的细节,以同样的方式,其他标志解释中 正在请求以下标志的定义: SPAN_COMPOSING SPAN_INTERMEDIATE SPAN_POINT_MARK_MASK SPAN_PRIORITY SPAN_USER SPAN_USER_SHIFT SPAN_composition是用于输入文本的标志,被视为临时SPAN,在输入完成后将被删除,此标志设置在用于对输入法的合成文本应用临时样式信息的跨距上,以便在

有人能对Android的跨Java接口中的标志给出清晰的解释吗?是不清楚,我需要更多的细节,以同样的方式,其他标志解释中

正在请求以下标志的定义:

SPAN_COMPOSING
SPAN_INTERMEDIATE
SPAN_POINT_MARK_MASK
SPAN_PRIORITY
SPAN_USER
SPAN_USER_SHIFT

SPAN_composition是用于输入文本的标志,被视为临时SPAN,在输入完成后将被删除,此标志设置在用于对输入法的合成文本应用临时样式信息的跨距上,以便在替换合成文本时可以找到并删除这些跨距

它使用SPAN_组合并将其从文本中删除;相关代码引用如下:

public static final void removeComposingSpans(Spannable text) {

    text.removeSpan(COMPOSING);
    Object[] sps = text.getSpans(0, text.length(), Object.class);

    if (sps != null) {

        for (int i = sps.length-1; i >= 0; i--) {

            Object o = sps[i];

            if ((text.getSpanFlags(o) & Spanned.SPAN_COMPOSING) != 0) {

                text.removeSpan(o);
            }
        }
    }
}

public static void setComposingSpans(Spannable text) {

    final Object[] sps = text.getSpans(0, text.length(), Object.class);

    if (sps != null) {

        for (int i = sps.length - 1; i >= 0; i--) {

            final Object o = sps[i];

            if (o == COMPOSING) {

                text.removeSpan(o);
                continue;
            }

            final int fl = text.getSpanFlags(o);

            if ((fl & (Spanned.SPAN_COMPOSING | Spanned.SPAN_POINT_MARK_MASK)) 
                    != (Spanned.SPAN_COMPOSING | Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)) {

                text.setSpan(o, text.getSpanStart(o), text.getSpanEnd(o),
                        (fl & Spanned.SPAN_POINT_MARK_MASK)
                                | Spanned.SPAN_COMPOSING
                                | Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
    }

    text.setSpan(COMPOSING, 0, text.length(),
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);
}
SPAN_INTERMEDIATE将被视为一个标志,用于在跨度发生更改时临时分配给跨度,并在应用更改后被删除。“此标志将为中间跨度更改设置,这意味着随后将有另一个更改。”

SPAN\u POINT\u MARK\u MASK是一个位掩码,主要用于比较目的,以检查是否应用了符合条件的位状态。请参阅上面引用的代码中对其的正确使用

SPAN_PRIORITY指用于更新目的的文本布局的优先级;API指出,它只应在特殊情况下设置,因此开发人员无需设置

SPAN\u USERSPAN\u USER\u SHIFT是其他自定义标量数据的存储区域,如果开发人员选择使用,这些数据将与SPAN一起存储