【问题标题】:getSpans for Spanned String returns spans out of order?跨区字符串的 getSpans 返回跨度乱序?
【发布时间】:2014-09-25 16:34:06
【问题描述】:

我使用以下代码筛选跨区字符串,将所有粗体文本保存为数组中的字符串:

StyleSpan[] spans = storyText.getSpans(0,
        storyText.length(), StyleSpan.class);
List<String> boldedWords = new ArrayList<String>();
for (StyleSpan span : spans) {
    if (span.getStyle() == Typeface.BOLD) {
        //start
        int s = storyText
                .getSpanStart(span);
        //end
        int e = storyText.getSpanEnd(span);
        boldedWords.add(storyText.subSequence(
                s, e).toString());
    }
}

String[] array = boldedWords
        .toArray(new String[boldedWords.size()]);

但是,我在数组中收到的字符串是乱序的。例如:

句子可能是(大写字母表示粗体):

storyText = "This ADJECTIVE NOUN is VERB"

我要返回的数组是:“名词、动词、形容词”的顺序。应该是:“形容词、名词、动词”

对为什么会发生这种情况有任何见解吗?

【问题讨论】:

  • 如何设置Span()s?
  • 这样:field[y] = input.getText().toString(); moreText = " " + "" + field[y] + "" + " ";文本 = 故事.getText(); Text = Text.replace(start, end, Html.fromHtml(moreText));故事文本 = 文本; story.setText(storyText);
  • 不要使用糟糕的 Html.fromHtml,而是使用 Spannable.setSpan()
  • 您认为这是问题所在吗?因为我使用 HTML 为我需要的东西设置了一个很好的系统
  • 顺序和你调用setSpan()的顺序一样

标签: android html string arraylist spanned


【解决方案1】:

使用int nextSpanTransition(int start, int limit, Class kind) 迭代您的跨度。这样你就得到了阅读顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多