Android布局顶到状态栏or状态栏布局or沉浸式状态栏
1.状态栏里面开始布局的
设置主题
<style name="NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
//隐藏状态栏
<item name="windowActionBar">false</item>
//隐藏标题栏
<item name="windowNoTitle">true</item>
//状态栏透明色<!--API最少19-->
<item name="android:windowTranslucentStatus">true</item>
</style>
//代码设置状态栏颜色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
设置了上面的代码,布局就会从状态栏开始布局
2.沉浸式状态栏
private void initBar(int color) {
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//5.0 以上直接设置状态栏颜色
window.setStatusBarColor(color);
} else {
//根布局添加占位状态栏
ViewGroup decorView = (ViewGroup) window.getDecorView();
View statusBarView = new View(this);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
getStatusBarHeight(this));
statusBarView.setBackgroundColor(color);
decorView.addView(statusBarView, lp);
}
}
/**
* 获取状态栏高度
*
* @param context context
* @return 状态栏高度
*/
protected int getStatusBarHeight(Context context) {
// 获得状态栏高度
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
return context.getResources().getDimensionPixelSize(resourceId);
}
3.状态栏之下开始布局
在顶部布局中添加
android:fitsSystemWindows="true"
就是从状态栏之下开始布局
来源:CSDN
作者:q957789074
链接:https://blog.csdn.net/q957789074/article/details/80936286