请注意,NotificationCompat.Builder.setCustomBigContentView的文档说明:. 提供自定义RemoteViews以代替扩展表单中的平台模板。
这将覆盖原本由此生成器 ...
腾讯云备案控制台腾讯云开发者社区专栏问答沙龙团队主页TVP搜索搜索关闭创作写文章发视频提问登录注册展开腾讯云·社区登录首页专栏问答沙龙团队主页TVP返回腾讯云官网创建自定义大通知浏览19关注0回答2得票数23原文我想创建一个包含一些控件的通知。
由于文本和控件较小,默认通知大小(64dp),我希望它大于默认大小。
可以创建更大的通知,我认为也可以有一个自定义的布局,但我不知道怎么做。
更具体地说,下面的屏幕截图显示了来自spotify的通知(图片来自here):如您所见,大小大于默认大小。
此外,它有某种没有文本的ImageButtons-如果你使用,你可能会提供一个图标,但也需要提供一个CharSequence作为描述-如果你把描述留空,仍然会有空间留给文本,如果你传递null,它将崩溃。
有人能告诉我如何创建一个自定义布局的大通知吗?谢谢原文关注分享反馈MalaKa提问于2014-01-2023:142个回答高票数最新MalaKa修改于2016-08-0520:56已采纳得票数62接口变更导致的更新:从API24开始,Notification.Builder包含setCustomBigContentView(RemoteViews)。
NotificationCompat.Builder(它是support.v4包的一部分)也包含此方法。
请注意,NotificationCompat.Builder.setCustomBigContentView的文档说明:提供自定义RemoteViews以代替扩展表单中的平台模板。
这将覆盖原本由此生成器对象构造的展开布局。
在JELLY_BEAN之前的版本上无操作。
因此,这也只适用于>=16(JELLY_BEAN)接口。
原始答案因此,在过度使用谷歌之后,我发现thistutorial正在解释如何使用自定义的大布局。
诀窍不是使用setStyle(),而是在构建Notification之后手动设置它的字段。
看起来有点老生常谈,但这是我最终想出来的:notification_layout_big.xml:
android:orientation="horizontal">
复制在代码中构建Notification:NotificationforegroundNote;
RemoteViewsbigView=newRemoteViews(getApplicationContext().getPackageName(),
R.layout.notification_layout_big);
//bigView.setOnClickPendingIntent()etc..
Notification.BuildermNotifyBuilder=newNotification.Builder(this);
foregroundNote=mNotifyBuilder.setContentTitle("somestring")
.setContentText("Slidedownonnotetoexpand")
.setSmallIcon(R.drawable.ic_stat_notify_white)
.setLargeIcon(bigIcon)
.build();
foregroundNote.bigContentView=bigView;
//nowshownotification..
NotificationManagermNotifyManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyManager.notify(1,foregroundNote);复制编辑正如chx101所指出的,这只适用于API>=16。
我在这个答案中没有提到它,但在上面的链接教程中提到了它:扩展通知最早是在Android4.1JellyBeanAPI16中引入的。
收藏0评论9分享反馈原文AshishKumar修改于2019-10-3119:57得票数2使用Kotlin生成自定义通知的dialog\_custom\_notification复制
shape_bg_main_notification
@SuppressLint("WrongConstant")
funshowOfflineNotification(context:Context,title:String,description:String){
valNOTIFICATION_CHANNEL_ID="com.myapp"
valintent=Intent(context,HomeActivity::class.java)
intent.putExtra("notification",1)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
if(intent!=null){
valpendingIntent=PendingIntent.getActivity(
context,getTwoDigitRandomNo(),intent,
PendingIntent.FLAG_ONE_SHOT
)
valdefaultSoundUri=
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
valremoteCollapsedViews=RemoteViews(packageName,R.layout.dialog_custom_notification)
remoteCollapsedViews.setTextViewText(R.id.tvNotificationTitle,title)
remoteCollapsedViews.setTextViewText(R.id.tvNotificationDescription,description)
remoteCollapsedViews.setTextViewText(R.id.tvDateTime,getTime())
valnotificationBuilder=NotificationCompat.Builder(context)
notificationBuilder.setCustomBigContentView(remoteCollapsedViews)
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher_round)
notificationBuilder.setLargeIcon(
BitmapFactory.de
codeResource(
context.resources,
R.mipmap.ic_launcher
)
)
notificationBuilder.setBadgeIconType(R.mipmap.ic_launcher_round)
notificationBuilder.setContentTitle(title)
if(description!=null){
notificationBuilder.setContentText(description)
notificationBuilder.setStyle(
NotificationCompat.BigTextStyle().bigText(description)
)
}
notificationBuilder.setPriority(NotificationCompat.PRIORITY_HIGH)
notificationBuilder.setAutoCancel(true)
notificationBuilder.setSound(defaultSoundUri)
notificationBuilder.setVibrate(longArrayOf(1000,1000))
notificationBuilder.setContentIntent(pendingIntent)
valnotificationManager=
context.getSystemService(Context.NOTIFICATION_SERVICE)asNotificationManager
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
valimportance=NotificationManager.IMPORTANCE_MAX
valnotificationChannel=NotificationChannel(
NOTIFICATION_CHANNEL_ID,
"NOTIFICATION_CHANNEL_NAME",
importance
)
notificationChannel.enableLights(true)
notificationChannel.lightColor=Color.RED
notificationChannel.enableVibration(true)
notificationChannel.vibrationPattern=longArrayOf(1000,1000)
assert(notificationManager!=null)
notificationBuilder.setChannelId(NOTIFICATION_CHANNEL_ID)
notificationManager.createNotificationChannel(notificationChannel)
}
notificationManager.notify(
getTwoDigitRandomNo()/*IdofNotification*/,
notificationBuilder.build()
)
}
}
privatefungetTime():String{
valcalendar=Calendar.getInstance()
valmdformat=SimpleDateFormat("HH:mm")
valstrDate=mdformat.format(calendar.time)
returnstrDate
}
fungetTwoDigitRandomNo():Int{
returnRandom().nextInt(90)+10
}
[1]:https://me.stack.imgur.com/rQFP8.png
[1]:https://me.stack.imgur.com/fKM9C.png复制收藏0评论1分享反馈原文页面原文内容由MalaKa、MHP、TheRealChx101、HRaval、Ezio、AshishKumar提供。
腾讯云小微IT领域专用引擎提供翻译支持原文链接:https://stackoverflow.com/questions/21237495复制广告关闭【玩转CloudStudio】有奖调研征文,千元豪礼等你拿想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING定制公仔等你来拿!立即参与androidandroid-layoutandroid-notifications"argv[0]=可执行文件的名称“是一个公认的标准,还是仅仅是一个通用的约定?得票数116如何使用jquery禁用指定td中的按钮?得票数0在Javascript中捕获图像特定错误得票数0如何在Angular5反应式表单中将表单控件值传递给自定义验证器函数的参数得票数3如何创建带有自定义颜色的文本和图标的白色工具栏?得票数0当我们在Django中创建一个竞争表作为其他表的一列的外键时,哪一列将成为外键?得票数0TypeORM:SyntaxError:创建迁移时不能在模块外部使用import语句得票数0VisualForce按钮不返回选定的Ids得票数0自定义时间格式方法问题得票数0设置最小和最大缩放级别得票数1社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于视频介绍社区规范免责声明联系我们友情链接归档问题归档专栏文章归档快讯文章归档关键词归档开发者手册归档开发者手册Section归档腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL数据库SSL证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright©2013-2022TencentCloud.AllRightsReserved.腾讯云版权所有京公网安备11010802017518粤B2-20090059-1扫描二维码扫码关注腾讯云开发者领取腾讯云代金券