一,默认状态栏4.4和5.0以上
如果说要兼容4.4状态栏怎么办呢?
1.直接设置状态栏颜色:
window.setStatusBarColor(getResources().getColor(R.color.fab_color));
尝试了一下,只有在api21也就是5.0才能直接设置。
2.把4.4状态栏变成透明,之后把布局延伸到状态栏底下。
private void setStatusBarUpperAPI19() {
Window window = getWindow();
//设置悬浮透明状态栏
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
ViewGroup mContentView = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);
int statusBarHeight = getStatusBarHeight();
int statusColor = getResources().getColor(R.color.colorAccent);
View mTopView = mContentView.getChildAt(0);
if (mTopView != null && mTopView.getLayoutParams() != null &&
mTopView.getLayoutParams().height == statusBarHeight) {
mTopView.setBackgroundColor(statusColor);
return;
}
//制造一个和状态栏等尺寸的 View
mTopView = new View(this);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight);
mTopView.setBackgroundColor(statusColor);
//将view添加到第一个位置
mContentView.addView(mTopView, 0, lp);
}
二,如果有 drawerLayout的话
4.4的效果是
5.0效果是
如果想达到5.0效果
加入
drawer_layout.setFitsSystemWindows(true);
drawer_layout.setClipToPadding(false);
处理后的效果
参考 http://blog.csdn.net/tc_xingdechen/article/details/68958337