要改变操作文本的颜色,请使用:
HtmlCompat.fromHtml("<font color=\"" + ContextCompat.getColor(context, R.color.custom_color) + "\">" + context.getString(R.string.fire) + "</font>", HtmlCompat.FROM_HTML_MODE_LEGACY)
作为操作标题CharSequence
,例如:
Notification notification = new NotificationCompat.Builder(context, channelId)
...
.addAction(new NotificationCompat.Action.Builder(
R.drawable.ic_fire,
HtmlCompat.fromHtml("<font color=\"" + ContextCompat.getColor(context, R.color.custom_color) + "\">" + context.getString(R.string.fire) + "</font>", HtmlCompat.FROM_HTML_MODE_LEGACY),
actionPendingIntent))
.build())
.build();
CharSequense
,我猜测可以使用可扩展字符串(Spannable String)。 - SdghasemiNotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setColor(ContextCompat.getColor(context, R.color.colorPrimary));
NotificationCompat.Builder.setColor
方法用于为通知设置强调颜色,该颜色也将应用于操作按钮的文本。
private fun getActionText(@StringRes stringRes: Int, @ColorRes colorRes: Int): Spannable? {
val spannable: Spannable = SpannableString(applicationContext.getText(stringRes))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
spannable.setSpan(
ForegroundColorSpan(applicationContext.getColor(colorRes)), 0, spannable.length, 0
)
}
return spannable
}
之后你只需要从builder
中调用它即可:
builder.addAction(R.drawable.ic_call_end, getActionText(R.string.reject,R.color.red), rejectPendingIntent)
builder.addAction(R.drawable.ic_accept, getActionText(R.string.accept,R.color.green), acceptPendingIntent)
NotificationCompat.Builder(context).setColor(ContextCompat.getColor(context, R.color.yourColorResourceHere))
.addAction(android.R.drawable.ic_menu_close_clear_cancel, "Fire", myPendingIntent);
Notification.Action.Builder
类将帮助您解决添加操作按钮图标的问题。https://developer.android.com/reference/android/app/Notification.Action.Builder.html 至于更改文本颜色,我不确定。但是我认为您可以尝试使用Spannable
(虽然我不确定)。https://developer.android.com/reference/android/text/Spannable.html - Dhrumil Patel