簡體   English   中英

SpannableStringBuilder append 一個 SpannableString object 不顯示跨度?

[英]SpannableStringBuilder append a SpannableString object not show the span?

我正在嘗試使用 SpannableStringBuilder 為句子中給定字符序列的所有出現實現可擴展顏色,就像:

val spannableStr1 = SpannableString("hello world!")
spannableStr1.setSpan(ForegroundColorSpan(Color.parseColor("#FF0000")),
        0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
val spannableBuilder = SpannableStringBuilder()
spannableBuilder.append(spannableStr1)
spannableBuilder.append(spannableStr1)
tvDemo.text = spannableBuilder

這導致:

在此處輸入圖像描述

我需要第二次出現的字符hel也是紅色的。 所以我再次嘗試 append spannableStr1 ,但它似乎不起作用。

有沒有辦法實現它?

spannableStr1 上的跨度設置為 0-3。 不幸的是,一旦您第二次將它添加到可跨字符串生成器中,它仍然是 0-3。 這會導致這里出現問題 - 您將同一部分塗成紅色兩次。

更好的方法是不要在文本中添加跨度。 相反,只需 append 文本並將跨度直接添加到 SpannableStringBuilder。 這意味着第一個跨度應該是(0,3),第二個應該是(第二個 h 的索引,第二個 h + 3 的索引)

val spannableStr1 ="hello world!"
val spannableBuilder = SpannableStringBuilder()
spannableBuilder.append(spannableStr1)
spannableBuilder.append(spannableStr1)
spannableBuilder.setSpan(ForegroundColorSpan(Color.parseColor("#FF0000")),
        0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
spannableBuilder.setSpan(ForegroundColorSpan(Color.parseColor("#FF0000")),
        spannableStr1.length, spannableStr1.length + 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tvDemo.text = spannableBuilder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM