1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android通知背景色 android – 更改通知RemoteViews背景颜色

android通知背景色 android – 更改通知RemoteViews背景颜色

时间:2021-11-04 18:34:58

相关推荐

android通知背景色 android  – 更改通知RemoteViews背景颜色

我在使用Application-Theme更改Background-Color时遇到问题.

NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this);

TypedValue typedValue = new TypedValue();

getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true);

int iPrimaryColor = typedValue.data;

getTheme().resolveAttribute(R.attr.colorPrimaryDark, typedValue, true);

int iPrimaryDarkColor = typedValue.data;

Intent notIntent = new Intent(getApplicationContext(), MainActivity.class);

notIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

PendingIntent notOpenOnClick = PendingIntent.getActivity(getApplicationContext(), 0, notIntent, PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews smallContentView = new RemoteViews(getPackageName(), R.layout.notification_small);

RemoteViews bigContentView = new RemoteViews(getPackageName(), R.layout.notification_expanded);

nBuilder.setSmallIcon(R.drawable.not_icon)

.setOngoing(true)

.setContentTitle(getCurrentSong().getTitle())

.setContentIntent(notOpenOnClick);

Notification not = nBuilder.build();

smallContentView.setInt(R.id.not_linLayout, "setBackgroundColor", iPrimaryColor);

smallContentView.setInt(R.id.not_imvDivider, "setBackgroundColor", iPrimaryDarkColor);

bigContentView.setInt(R.id.not_linLayout, "setBackgroundColor", iPrimaryColor);

bigContentView.setInt(R.id.not_imvDivider, "setBackgroundColor", iPrimaryDarkColor);

setListeners(smallContentView);

setListeners(bigContentView);

not.contentView = smallContentView;

not.bigContentView = bigContentView;

if (isPlaying()) {

not.contentView.setImageViewResource(R.id.not_btnPlayPause, R.drawable.ic_pause_48dp);

not.bigContentView.setImageViewResource(R.id.not_btnPlayPause, R.drawable.ic_pause_48dp);

}

else {

not.contentView.setImageViewResource(R.id.not_btnPlayPause, R.drawable.ic_play_48dp);

not.bigContentView.setImageViewResource(R.id.not_btnPlayPause, R.drawable.ic_play_48dp);

}

我已经尝试过了,但我的通知背景仍然是白色的.

ID是正确的,View linLayout是LinearLayout.

请记住:整个代码在服务中调用!

谢谢!

解决方法:

通过利用NotificationCompat.MediaStyle,可以更轻松地完成大部分工作.它可以在API 24之前的设备上从setColor()调用中获取背景颜色(并在API 24设备上使用该颜色作为重点).这也意味着您不再需要编写任何自定义RemoteViews代码,因为它仅依赖于您添加到媒体控件通知中的操作:

NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this);

nBuilder.setSmallIcon(R.drawable.not_icon)

.setContentTitle(getCurrentSong().getTitle())

.setContentIntent(notOpenOnClick);

// This is what sets the background color on

// It is an accent color on N+ devices

nBuilder.setColor(getResources().getColor(R.color.colorPrimary));

// Add actions via nBuilder.addAction()

// Set the style, setShowActionsInCompactView(0) means the first

// action you've added will be shown the non-expanded view

nBuilder.setStyle(new NotificationCompat.MediaStyle()

.setShowActionsInCompactView(0));

标签:android,service,notifications,themes,android-remoteview

来源: https://codeday.me/bug/1008/1874783.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。