0
我知道如何在iOS中完成此操作,但尚未在android中完成。如何構建Android的一個屬性串,其中一部分是大膽地在如何爲api level 11構造android AttributedString
「這是一個大膽部分的例子」
我知道如何在iOS中完成此操作,但尚未在android中完成。如何構建Android的一個屬性串,其中一部分是大膽地在如何爲api level 11構造android AttributedString
「這是一個大膽部分的例子」
FWIW,我從來沒有見過使用AttributedString
,在〜6.5歲Android開發工作。
實施Spanned
的類包含標記規則(「跨度」)。動態構造一個最簡單的方法是使用Html.fromHtml()
解析帶有基本標記(如<b>
)的HTML字符串。字符串資源(例如,res/values/strings.xml
)也支持<b>
,<i>
和<u>
標籤。
或者,您可以自己申請跨度。在下面的示例代碼中,我得到的CharSequence
從TextView
,刪除所有現有的跨度,並突出顯示搜索詞與BackgroundColorSpan
:
private void searchFor(String text) {
TextView prose=(TextView)findViewById(R.id.prose);
Spannable raw=new SpannableString(prose.getText());
BackgroundColorSpan[] spans=raw.getSpans(0,
raw.length(),
BackgroundColorSpan.class);
for (BackgroundColorSpan span : spans) {
raw.removeSpan(span);
}
int index=TextUtils.indexOf(raw, text);
while (index >= 0) {
raw.setSpan(new BackgroundColorSpan(0xFF8B008B), index, index
+ text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
index=TextUtils.indexOf(raw, text, index + text.length());
}
prose.setText(raw);
}
爲粗體或斜體,你會使用StyleSpan
而不是BackgroundColorSpan
,等等。