如何更改窗口小部件中textview的字体?

时间:2018-01-08 03:29:25

标签: android widget

我有一个消息传递窗口小部件,显示用户消息的列表,未读消息应显示为粗体。

我的代码:

    RemoteViews messageRow = new RemoteViews(mContext.getPackageName(), R.layout.row_message);

    messageRow.setTextViewText(R.id.row_user_name, mMessages.get(position).getSender());
    messageRow.setTextViewText(R.id.row_time, mMessages.get(position).getDate());

    if (!mMessages.get(position).isIsRead()){
        // Bold the textviews if the message is unread
    }

我正在寻找类似于textView.setTypeface(textView.getTypeface(), BOLD);的内容,适用于小部件文本视图。 RemoteViews似乎不存在此语法。

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这样。

1.在代码中使用SpannableString

2.然后使用new StyleSpan(android.graphics.Typeface.BOLD)new StyleSpan(android.graphics.Typeface.NORMAL)

3.设置为RemoteViews

示例

//  SpannableString init
SpannableString mspInt = null;
// the text you want to change the style 
String text = "yourString";
// SpannableString init
mspInt = new SpannableString(text);
    if (!mMessages.get(position).isIsRead()){
    // Bold the textviews if the message is unread
    //  use setSpan to set BOLD to your text
    mspInt.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    messageRow.setTextViewText(R.id.your_id, mspInt);
} else {
    //  use setSpan to set NORMAL to your text
    mspInt.setSpan(new StyleSpan(Typeface.NORMAL), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    messageRow.setTextViewText(R.id.your_id, mspInt);
}

答案 1 :(得分:0)

请试试这个,这对我有用 只需将“assistant_bold.ttf”文件添加到资产文件夹即可。 然后将android.graphics.Typeface 导入到您的类

字体xyz;

xyz = Typeface.createFromAsset(context.getAssets(),“assistant_bold.ttf”);  messageRow.setTypeface(XYZ);