Android 解释这些标志(SPAN_组合、SPAN_用户等)的定义
有人能对Android的跨Java接口中的标志给出清晰的解释吗?是不清楚,我需要更多的细节,以同样的方式,其他标志解释中 正在请求以下标志的定义: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,在输入完成后将被删除,此标志设置在用于对输入法的合成文本应用临时样式信息的跨距上,以便在
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 USER和SPAN\u USER\u SHIFT是其他自定义标量数据的存储区域,如果开发人员选择使用,这些数据将与SPAN一起存储