TextSwitcher中的格式化文本?

时间:2011-09-05 09:58:17

标签: android android-widget

我正在使用TextSwitcher,但setText()方法接受CharSequence而不是resID整数。如果我使用getString(resID),则会删除格式。有没有办法让格式化文本(粗体和斜体)显示在TextSwitcher

2 个答案:

答案 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