在开发中,经常会需要会各种栏的设置。比如,获取状态栏高度,对状态栏进行隐藏等,为此,对于这些操作整理了下
目录
状态栏
获取状态栏高度
public static int getStatusBarHeight() {
Resources resources = Utils.getApp().getResources();
int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
return resources.getDimensionPixelSize(resourceId);
}
设置状态栏是否可见
public static void setStatusBarVisibility(@NonNull final Activity activity,final boolean isVisible) {
setStatusBarVisibility(activity.getWindow(), isVisible);
}
public static void setStatusBarVisibility(@NonNull final Window window, final boolean isVisible) {
if (isVisible) {
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
设置状态栏模式
public static void setStatusBarLightMode(@NonNull final Activity activity,final boolean isLightMode) {
setStatusBarLightMode(activity.getWindow(), isLightMode);
}
public static void setStatusBarLightMode(@NonNull final Window window,final boolean isLightMode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decorView = window.getDecorView();
if (decorView != null) {
int vis = decorView.getSystemUiVisibility();
if (isLightMode) {
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
} else {
vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
decorView.setSystemUiVisibility(vis);
}
}
}
将view的topMargin加上状态栏高度
//getStatusBarHeight()方法见文章开头
private static final int TAG_OFFSET = -123;
public static void addMarginTopEqualStatusBarHeight(@NonNull View view) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
Object haveSetOffset = view.getTag(TAG_OFFSET);
if (haveSetOffset != null