我正在使用TextSwitcher
,但setText()
方法接受CharSequence
而不是resID整数。如果我使用getString(resID)
,则会删除格式。有没有办法让格式化文本(粗体和斜体)显示在TextSwitcher
?
答案 0 :(得分:3)
了解SpannableStringBuilder
,这在制作样式文字方面非常有用。
然后只需创建格式化的字符串,如:
SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append("Hi, abc!");
sb.setSpan(new ForegroundSpan(0xffff0000), 4, 7, 0); // set characters 4 to 7 to red
yourTextWidget.setText(sb, BufferType.SPANNABLE);
修改: TextSwitcher
只是ViewSwitcher
的一个小包装器。检查TextSwitcher
的来源显示:
/**
* Sets the text of the next view and switches to the next view. This can
* be used to animate the old text out and animate the next text in.
*
* @param text the new text to display
*/
public void setText(CharSequence text) {
final TextView t = (TextView) getNextView();
t.setText(text);
showNext();
}
所以,只需调用此代替setText
:
final TextView t = (TextView) yourWidget.getNextView();
t.setText(sb, BufferType.SPANNABLE);
yourWidget.showNext();
答案 1 :(得分:0)
要将格式化文本设置为TextView
,您需要使用Html.fromHtml(String)。请注意,Spanned
来自CharSequence
。
您还可以使用Resources.getText(int)从应用资源中获取样式CharSequence
。