2014-10-04 68 views

回答

1

FWIW,我從來沒有見過使用AttributedString,在〜6.5歲Android開發工作。

實施Spanned的類包含標記規則(「跨度」)。動態構造一個最簡單的方法是使用Html.fromHtml()解析帶有基本標記(如<b>)的HTML字符串。字符串資源(例如,res/values/strings.xml)也支持<b>,<i><u>標籤。

或者,您可以自己申請跨度。在下面的示例代碼中,我得到的CharSequenceTextView,刪除所有現有的跨度,並突出顯示搜索詞與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); 
    } 

(從this sample project

爲粗體或斜體,你會使用StyleSpan而不是BackgroundColorSpan,等等。

相關問題