假設你有以下字符串:用的String.format結合Spannable()
String s = "The cold hand reaches for the %1$s %2$s Ellesse's";
String old = "old";
String tan = "tan";
String formatted = String.format(s,old,tan); //"The cold hand reaches for the old tan Ellesse's"
假設你想用這個字符串結束了,但也有通過String.format
取代任何文字特定Span
集。
舉例來說,我們也想做到以下幾點:
Spannable spannable = new SpannableString(formatted);
spannable.setSpan(new StrikethroughSpan(), oldStart, oldStart+old.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.setSpan(new ForegroundColorSpan(Color.BLUE), tanStart, tanStart+tan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
是否有結識的old
和tan
開始指數的強勁呢?
請注意,只要搜索「舊」,就會在「冷」中返回「舊」,這樣就不會起作用。
什麼將的工作,我想,正在尋找%[0-9]$s
事前,並計算抵消在String.format
佔了替代品。這似乎是一個頭痛,但我懷疑可能有一種方法,如String.format
,它是格式化的更多信息。那麼,在那裏?
至少對於顏色,您可以嘗試替換字符串' tan'並使用spannable = Html.fromHtml(格式化)。 '
舊'不渲染,但。 – Maarten這幾乎肯定可以使用[TextUtils.expandTemplate](https://developer.android.com/reference/android/text/TextUtils.html#expandTemplate(java.lang.CharSequence,%20java.lang.CharSequence ... ))。 –