问题描述
我正在使用 android spans 实现富编辑器。 我创建了复选框跨度。这扩展了扩展ParagraphStyle 接口的LeadingMarginSpan。 我的问题是我必须将此跨度设置为空文本。 例如,对于“\n\n\n”,我必须设置 (0,0)、(1,1)、(2,2)、(3,3) 表示跨度范围。将有 4 个复选框。 但是,android 不支持 0 长度的段落样式。当我看到 android.text.spannablestringbuilder 时,函数“nextSpanTransitionRec”就像这段代码。
private int nextSpanTransitionRec(int start,int limit,Class kind,int i) {
if ((i & 1) != 0) {
// internal tree node
int left = leftChild(i);
if (resolveGap(mSpanMax[left]) > start) {
limit = nextSpanTransitionRec(start,limit,kind,left);
}
}
if (i < mSpanCount) {
int st = resolveGap(mSpanStarts[i]);
int en = resolveGap(mSpanEnds[i]);
if (st > start && st < limit && kind.isinstance(mSpans[i]))
limit = st;
if (en > start && en < limit && kind.isinstance(mSpans[i]))
limit = en;
if (st < limit && (i & 1) != 0) {
limit = nextSpanTransitionRec(start,rightChild(i));
}
}
return limit;
}
我不明白为什么 android 不支持这个用例。 还有一个问题。 android.text.layout 有这个方法。
/* package */static <T> T[] getParagraphSpans(Spanned text,int start,int end,Class<T> type) {
if (start == end && start > 0) {
return ArrayUtils.emptyArray(type);
}
if(text instanceof SpannableStringBuilder) {
return ((SpannableStringBuilder) text).getSpans(start,end,type,false);
} else {
return text.getSpans(start,type);
}
}
如果段落样式跨度在缓冲区的末尾并且长度为0,则框架返回空跨度。 我试图定制它们。但这些功能是私有的。我需要几个月的时间来解决这个问题。
我认为一些应用实现了这个用例。所以我认为会有解决方案。但几个月后我找不到它。有没有办法实现这个用例?
请救救我...T^T
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)