【问题标题】:SpannableStringBuilder.getSpans() sort order is wrong on nougat 7.0/7.1SpannableStringBuilder.getSpans() 排序顺序在牛轧糖 7.0/7.1 上是错误的
【发布时间】:2016-12-09 02:27:26
【问题描述】:

以下代码适用于我在 2.3 和 6.0.1 之间尝试的所有内容,但在 7.0/Emulator 和 7.1.1/Nexus 6P 中失败

SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
for (int i=0;i<5;++i) {
    int p = spannableStringBuilder.length();
    spannableStringBuilder.append("aAAAAa\n");
    spannableStringBuilder.setSpan(new StyleSpan(Typeface.ITALIC), p+1, p+5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}

boolean pass = true;
StyleSpan[] spans = spannableStringBuilder.getSpans(0, spannableStringBuilder.length(), StyleSpan.class);
int p = 0;
for (StyleSpan span : spans) {
    int start = spannableStringBuilder.getSpanStart(span);
    if (start<p) {
        pass = false;
        break;
    }
    p = start;
}

【问题讨论】:

标签: android android-7.0-nougat spannablestringbuilder


【解决方案1】:

我正在使用的当前解决方法

Arrays.sort(spans, new Comparator<ClickableSpan>() {
    @Override
    public int compare(ClickableSpan o1, ClickableSpan o2) {
        return s.getSpanStart(o1)-s.getSpanStart(o2);
    }
});

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多