透明状态栏只有在SDK>=19(Android4.4)才会生效.
透明状态栏设置状态栏的颜色这是一个为了兼容处理状态栏的工具类,可以不需要设置不同的style.xml文件,最重要的特性就是可以在**不重启Activity的情况下切换 setStatusBarColor 和 translucentStatusBar **.提供以下API:
//设置状态栏的颜色StatusBarCompat.setStatusBarColor(Activity activity, int color)//添加alpha值StatusBarCompat.setStatusBarColor(Activity activity, int statusColor, int alpha)//透明状态栏StatusBarCompat.translucentStatusBar(activity);//SDK >= 21时, 取消状态栏的阴影StatusBarCompat.translucentStatusBar(Activity activity, boolean hideStatusBarBackground);//为 CollapsingToolbarLayout 设置颜色setStatusBarColorForCollapsingToolbar(Activity activity, AppBarLayout appBarLayout, CollapsingToolbarLayout collapsingToolbarLayout, Toolbar toolbar, int statusColor)//SDK >= 23, 将状态栏改为浅色模式(状态栏 icon 和字体会变成深色)changeToLightStatusBar(Activity activity)//将状态栏改为深色模式(状态栏 icon 和字体会变成浅色, 即默认模式)cancelLightStatusBar(Activity activity)怎么使用在 setContentView 方法调用后再设置.
如果要使用全屏Activity,调用 StatusBarCompat.translucentStatusBar(activity) .
如果想让状态栏图标变成深色,记得最后调用 changeToLightStatusBar(activity) .
Demo说明:Demo只有一个Activity,分四个Tab.
CommonFragment为正常布局,可以通过SeekBar来调整状态栏颜色的alpha值.调用方法为: setStatusBarColor.
TranslucentFragment为图片布局,展示透明状态栏效果,SDK>=21时,可以通过按钮显示\隐藏statusBar的shadow,调用方法为: translucentStatusBar.
DrawerFragment展示DrawerLayout+CoordinatorLayout,调用方法为: setStatusBarColor.
CollapsingFragment展示CollapsingLayout的适配效果,调用方法为: setStatusBarColorForCollapsingToolbar.
每个Fragment下都可以通过Checkbox切换浅色/深色状态栏.
已知问题这些问题仅仅出现在4.4上
如果用在TabActivity上,会有一条黑线在状态栏下面,推荐使用 StatusBarCompat.setStatusBarColor(Activityactivity,intstatusColor,intalpha) 方法,推荐的透明值为112.
如果layout中第一个View为DrawerLayout,那么它的子View的fitsSystemWindow需要设置为false.
调用 translucentStatusBar 方法时,会给Window设置 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,这个Flag和软键盘一起使用的时候可能会导致 AndroidBug5497,可以尝试使用 这个方法 解决.
评论