目录
1.示例:
2.View层级:
3.View详解:
4.自定义Header:
5.总结:
属性:
type(id) | Width | Height | Margin(dp) | Padding(dp) | Gravity | Layout_gravity | Visibility | others | ||||||
top | bottom | start | end | top | bottom | start | end | |||||||
NotificationHeaderView(notification_header) | wrap_content | 48dp | horizontal | |||||||||||
CachingIconView(icon) | 18dp | 18dp | 3dp | |||||||||||
TextView(app_name_text) | wrap_content | wrap_content | 3dp | 2dp | singleLine | |||||||||
TextView(header_text_divider) | wrap_content | wrap_content | 2dp | 2dp | gone | |||||||||
TextView(header_text) | wrap_content | wrap_content | 2dp | 2dp | gone | singleLine | ||||||||
TextView(time_divider) | wrap_content | wrap_content | 2dp | 2dp | gone | singleLine | ||||||||
DateTimeView(time) | wrap_content | wrap_content | 2dp | 2dp | center | gone | singleLine | |||||||
Chronometer(chronometer) | wrap_content | wrap_content | 2dp | 4dp | gone | singleLine | ||||||||
NotificationExpandButton(expand_button) | wrap_content | wrap_content | 1dp | gone | ||||||||||
ImageView(profile_badge) | 12dp | 12dp | 4dp | 1dp | center | gone | fitCenter |
调用setSmallIcon方法设置
系统默认取应用的app_name来显示。
允许系统应用修改:
需要申请此权限:
修改方法:
builder.getExtras().putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, "name");
这个不允许修改,系统会控制隐藏与显示,并且随文字的颜色变化而变化
方法:
setSubText:
setSummaryText:
冲突管理:
结论:优先使用setSubText方法设置的Text;若此方法没有设置,则使用setSummaryText方法设置的Title;若都没有设置,则显示HeaderText的View隐藏
这个不允许修改,系统会控制隐藏与显示,并且随文字的颜色变化而变化
功能:显示通知已经发出了多场时间 例如:刚刚、1分钟前、2分钟前、1小时前等等
显示的配置:
setShowWhen设置为true(默认值为false)
setUsersChronometer设置为false(默认值为false)
setWhen不能设置为0(默认值为System.currentTimeMillis()获取的毫秒值)
功能:显示精确计时:用户可以根据需要配置时间,并且可以选择是否为倒计时
显示配置:
setUsersChronometer设置为true(默认值为false)
setWhen不能设置为0(默认值为System.currentTimeMillis()获取的毫秒值)
setChronometerCountDown true(倒计时) false(正计时) 默认值为false
setShowWhen方法无论设置为true还是fasle DateTimeView都会被隐藏
注:
1.使用精确计时时调用setWhen方法需要以System.currentTimeMillis()为基准,也就是说setWhen(System.currentTimeMillis() + 偏移时长)。
2.精确计时的最大单位为小时,最小单位为秒。若要显示几天或几月或几年,则换算成小时显示在冒号的前面。
功能:展开或隐藏通知的内容(通知内容非常多或者有多条通知时显示)
系统根据通知信息来控制显示与隐藏,当显示时,用户可以通过点击来控制内容全部显示或显示部分内容
功能:多用户特性中用来提示用户此通知是普通用户的APP所发出来的而不是管理用户(设备的拥有者,唯一)
此图标由系统根据userId来控制显示与隐藏,不提供API接口控制
方法:setCustomHeadsUpContentView
/**
* Supply custom RemoteViews to use instead of the platform template in the heads up dialog.
*
* This will override the heads-up layout that would otherwise be constructed by this
* Builder object.
*/
public Builder setCustomHeadsUpContentView(RemoteViews contentView) {
mN.headsUpContentView = contentView;
return this;
}
当系统提供的Layout不能满足需求时,可以使用此方法来设计你需要的Header,建议使用之前参考系统的Layout设计来完善你设计的Layout.