【发布时间】:2020-01-07 23:42:02
【问题描述】:
我创建了一个如下设置 fitSystemWindow 属性的函数:
private void setFitSystemWindows() {
try {
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.LOLLIPOP) {
// Do something for lollipop and above versions
View view = findViewById(R.id.relRoot);
view.setFitsSystemWindows(true);
view.setPadding(0, 0, 0, 0);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(ContextCompat.getColor(CameraActivity.this, R.color.colorBlackTransperent));
} else {
// do something for phones running an SDK before lollipop
View view = findViewById(R.id.relRoot);
view.setFitsSystemWindows(false);
view.setPadding(0, 0, 0, 0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
让我解释一下:
这里,R.id.relRoot 是布局 xml 文件中的父根 RelativeLayout。
我首先检查构建版本,如果构建版本大于 Lollipop,我将 fitsSystemWindows 设置为 true,如果不是,则将其设置为 false。
但是,当我在设备 > Lollipop 中运行应用程序时,我的状态栏颜色为白色 和 底部软视图(包含返回、主页和最近) 还有白色。
您可以看到我也在使用方法setStatusBarColor,但它不起作用。
可能是什么问题?
注意:正在检查模拟器设备:NEXUS 5X API 27(Android 8.1.0,API 27)
【问题讨论】:
-
如果您想删除状态栏,请将您的活动设为全屏活动。
标签: android android-layout statusbar android-statusbar window-soft-input-mode