我想定义通知用户界面,因为在某些手机中,通知背景颜色为白色,而在其他手机中则为黑色。我想检查什么是背景颜色,以便选择不同的布局。
在Android N之前,我的代码就像这个类:
原则是检查默认的contentView
标题和内容TextView
颜色。但在android N之后,默认contentView
为null
。
通知#构建:
public Notification build() {
if (mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N
&& (useExistingRemoteView())) {
if (mN.contentView == null) {
mN.contentView = createContentView();
mN.extras.putInt(EXTRA_REBUILD_CONTENT_VIEW_ACTION_COUNT,
mN.contentView.getSequenceNumber());
}
if (mN.bigContentView == null) {
mN.bigContentView = createBigContentView();
if (mN.bigContentView != null) {
mN.extras.putInt(EXTRA_REBUILD_BIG_CONTENT_VIEW_ACTION_COUNT,
mN.bigContentView.getSequenceNumber());
}
}
if (mN.headsUpContentView == null) {
mN.headsUpContentView = createHeadsUpContentView();
if (mN.headsUpContentView != null) {
mN.extras.putInt(EXTRA_REBUILD_HEADS_UP_CONTENT_VIEW_ACTION_COUNT,
mN.headsUpContentView.getSequenceNumber());
}
}
}
if ((mN.defaults & DEFAULT_LIGHTS) != 0) {
mN.flags |= FLAG_SHOW_LIGHTS;
}
return mN;
}
所以我的问题是:在Android N之后如何检查通知背景颜色是暗还是白?
答案 0 :(得分:0)
不建议您在通知文字上设置自定义颜色。相反,您应该使用TextAppearance.Compat.Notification styles作为文字:
TextAppearance.Compat.Notification
用于通知中的常规文字TextAppearance.Compat.Notification.Title
TextAppearance.Compat.Notification.Info
(或Line2
)用于辅助文字这些样式自动具有内置的正确颜色。
对于媒体应用,就像你提到的那样,应该使用NotificationCompat.MediaStyle
构建通知,这也会考虑正确的背景和文本颜色。