【问题标题】:Android Spanned getSpanEnd() returns wrong valueAndroid Spanned getSpanEnd() 返回错误值
【发布时间】:2022-01-19 02:28:53
【问题描述】:

我正在使用Html.fromHtml 解析一些 html 字符串,然后遍历跨度,我正在寻找每个跨度的开始和结束。我注意到对于<a> 标签,getSpanEnd 返回与 start 相同的值。有谁知道我怎样才能获得正确的价值?感谢您提供任何线索。

val spannedHtml = Html.fromHtml("The <b>quick</b> <span style='color:#a52a2a;'>brown</span> <i>fox</i> jumps <a>over</a> <u>the</u> <a>lazy dog</a>.", Html.FROM_HTML_MODE_LEGACY)
val spans: Array<Any> = spannedHtml.getSpans(0, spannedHtml.length - 1, Any::class.java)
spans.forEach { span ->
    val start = spannedHtml.getSpanStart(span)
    val end = spannedHtml.getSpanEnd(span)
    Log.d("span", "${span.javaClass.name} $start $end")
}

结果如下:

android.text.style.StyleSpan 4 9
android.text.style.ForegroundColorSpan 10 15
android.text.style.StyleSpan 16 19
android.text.HtmlToSpannedConverter$Href 26 26
android.text.style.UnderlineSpan 31 34
android.text.HtmlToSpannedConverter$Href 35 35

如您所见,getSpanEnd 返回的值与 getSpanStartHtmlToSpannedConverter$Href 相同。有谁知道为什么? 感谢您提供任何线索。

【问题讨论】:

    标签: android html spannable spanned getspanend


    【解决方案1】:

    对于Html.fromHtml&lt;a&gt; 元素不是链接 (URLSpan),除非它具有 href 属性。有效形式为&lt;a href="url"&gt;link text &lt;/a&gt;

    android.text.HtmlToSpannedConverter$Href 26 26

    这里 HtmlToSpannedConverter$Href 只是标记对象,不是真正的 Span。

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 2012-01-29
      • 2013-06-01
      • 2019-02-03
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多