安卓可折叠通知栏样式汇总

在一般情况下, 我们利用Notification.Builder 或者NotificationCompat.Builder即可完成常见的需求,谷歌也推荐我们尽量这样做。当系统布局无法满足需求时则通过自定义Layout去实现。
然而谷歌并不推荐开发者自定义状态栏样式,因为各版本以及各rom之间的差异性会导致无法预知的显示问题。点名一下小米4,自定义通知栏会强制加上白色左右padding,如果使用的是深色View,简直丑爆了。

可折叠通知栏样式

依据谷歌规范,自定义Layout在折叠状态下最大高度是64dp,在展开状态下则是256dp

  • 1,定义两个RemoteView,分别对应折叠状态和展开状态。
  • 2,如果不需要定义标题等元素,可调用Builder.setStyle(),传入一个NotificationCompat.DecoratedMediaCustomViewStyle的标准实例。
  • 3,注意控件的颜色或者背景,避免出现黑底黑字或者白底白字等类似问题,推荐使用TextAppearance_Compat_Notification相关style。
RemoteViews ntfSmall = new RemoteViews(packageName, R.layout.notification_small);
RemoteViews ntfLarge = new RemoteViews(packageName, R.layout.notification_large);

// Apply the layouts to the notification
Notification notification= new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.notification_icon)
        .setStyle(new NotificationCompat.DecoratedCustomViewStyle())//可选
        .setCustomContentView(ntfSmall)
        .setCustomBigContentView(ntfLarge)
        .build();

setStyle()可选样式:

  • 1.DecoratedCustomViewStyle:API-24添加,完全自定义模式。向下兼容需依赖appcompat-v7:28.0.0-alpha1及以上版本。分别构建折叠与展开layout
  • 2.BigPictureStyle:API-16添加,图像折叠模式,如果设置bigLargeIcon(null)则会使用大图作为缩略图预览;
  • 3.BigTextStyle:API-16添加,文字折叠模式,折叠时正常展示普通通知样式,展开后在多出来的区域展示bigText()内容
  • 4.InboxStyle:API-16添加,与BigTextStyle类似,通过addLine(String)方法可以让你在展开状态下多展示最多5行文字!
  • 5.MessagingStyle:API-24添加,消息样式,向下兼容需依赖appcompat-v7:28.0.0-alpha1addMessage()构建消息,在这种样式下ContentTitleContentText属性不生效
  • 6.MediaStyle:API-21添加,媒体播放样式,可在构建时添加action实现媒体控制功能
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文出处: http://www.androidchina.net/6174.html Notification在...
    木木00阅读 14,241评论 3 32
  • 转载自:http://blog.csdn.net/vipzjyno1/article/details/252480...
    HEXG_阅读 11,180评论 0 2
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,054评论 3 119
  • 提前攻略,2013升4A,2015升5A,景区处在完善中,规模宏大。早上十点过半进入景区,门口观光电动车、...
    萝卜青菜2012阅读 3,142评论 0 0
  • 在有关生物医学和社会科学研究中,常常让人们报告他们的想法、感受和行为。当这些研究内容被重复报告后,研究人员发现重复...
    SoochowU阅读 2,849评论 0 0

友情链接更多精彩内容