我正在尝试使用自定义布局在 Android 7 上创建通知,但我想使用 v7 支持库中的 DecoratedCustomView 样式:https://developer.android.com/reference/android/support/v7/app/NotificationCompat.DecolatedCustomViewStyle.html
我想使用这种样式的原因是我想使用android提供的通知头,如文档所述:
开发人员无需提供完全自定义的通知,而是可以设置此样式并仍然获得系统装饰,例如具有扩展可供性和操作的通知标头。
所以我尝试使用仅包含带有单个 TextView 的 LinearLayout 的 RemoteViews 。
final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
.setWhen(new Date().getTimeInMillis())
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("title")
.setContentText("text")
.setStyle(new android.support.v7.app.NotificationCompat.DecoratedCustomViewStyle())
.setContent(remoteViews);
结果是一个只包含我的 RemoteViews 的通知,不幸的是没有标题。我刚刚在媒体上找到了一个使用此的示例:https://medium.com/@britt.barak/notifications-part-3-going-custom-31c31609f314
但我无法使用 Android 提供的标头。任何帮助,将不胜感激 :)
这似乎是 android 支持库中的一个问题。我用通知生成器测试了它,它的工作原理与应有的一样。
我使用了该指南:https://medium.com/exploring-android/android-n-introducing-upgraded-notifications-d4dd98a7ca92
我在官方谷歌问题跟踪器上提交了该问题的错误:https://issuetracker.google.com/issues/62475846
update
虽然这不是谷歌方面的实际错误,但我认为实现并不理想。
问题是,使用了 v4 支持库的NotificationCompat,它不适用于 v7 装饰器。
发生这种用法是因为您无法以与 v7 NotificationCompat 相同的方式使用构建器模式。
import android.support.v7.app.NotificationCompat;
final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context);
notificationBuilder.setWhen(new Date().getTimeInMillis())
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("title")
.setContentText("text")
.setStyle(new NotificationCompat.DecoratedCustomViewStyle())
.setContent(remoteViews);
update 2
自支持库版本最终发布以来26.0.0不再需要使用 v7 的支持库。 DecoratedCustomViewStyle() 现在在 v4 版本中也可用。
所以在你的情况下你应该这样做:
.setStyle(new NotificationCompat.DecoratedCustomViewStyle())
代替
.setStyle(new android.support.v7.app.NotificationCompat.DecoratedCustomViewStyle())
现在应该做到这一点了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)