案例:
效果:
第一种
思路:
- android5.0以上
- 利用window将声明Status可绘制,相关Param属性为
FLAG_DRAW_SYSTEM_BAR_BACKGROUDS
- 调用window.setStatusBarCorlor()将Status颜色设置成actionBar颜色
这种方法有一定的局限性,满足toolbar为单一颜色的情况,当toolbar颜色背景为渐变色/图片时无法适用。
代码实现:
// activity中
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// 颜色为状态栏颜色,可在style中查看
getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimary));
}
- 5.0以下
第二种
通常配合Toolbar使用,关于隐藏ActionBar添加Toolbar的方法不是本篇重点,这里不进行赘述。
思路:将status设为半透明,在系统布局中加上一个view充当status的背景
// activity中
private View mStatusView;
private void addToolbarTransparent() {
// 为window设立半透明状态栏的标签
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if (mStatusView == null) {
mStatusView = new View(this);
// 屏幕宽度
int screenWidth = getResources().getDisplayMetrics().widthPixels;
int screenHeight = getStatusBarHeight();
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(screenWidth,screenHeig