在Android中管理不同设备的软底条时出现问题
我创建了一个函数,如下所示,用于设置fitSystemWindow属性:在Android中管理不同设备的软底条时出现问题,android,android-layout,statusbar,android-statusbar,window-soft-input-mode,Android,Android Layout,Statusbar,Android Statusbar,Window Soft Input Mode,我创建了一个函数,如下所示,用于设置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
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
我首先检查构建版本,如果构建版本大于棒棒糖,我会将fitsystemwindows
设置为true
,如果不是,则将其设置为false
但是,当我在devices>Lollipop中运行应用程序时,我的状态栏颜色为白色和底部软视图(其中包含back、home和recent)也使用白色
您可以看到,我也在使用方法setStatusBarColor
,但它不起作用
可能是什么问题
注意:我正在检查模拟器设备:NEXUS 5X API 27(Android 8.1.0,API 27)好吧,我试过你的代码,它对我有效。 所以我可以试着分析你的代码片段
if(android.os.Build.VERSION.SDK\u INT>android.os.Build.VERSION\u code.LOLLIPOP){
//为棒棒糖和更高版本做点什么
}
您不是在寻找棒棒糖及以上版本,而是在寻找除棒棒糖以外的版本。如果你还想找棒棒糖,请使用=
getApplicationContext()
或类似的工具正如我所说,我试过你的代码,它对我有效。嗯,我试过你的代码,它对我有效。 所以我可以试着分析你的代码片段
if(android.os.Build.VERSION.SDK\u INT>android.os.Build.VERSION\u code.LOLLIPOP){
//为棒棒糖和更高版本做点什么
}
您不是在寻找棒棒糖及以上版本,而是在寻找除棒棒糖以外的版本。如果你还想找棒棒糖,请使用=
getApplicationContext()
或类似的工具正如我所说,我尝试了你的代码,它对我很有效。这里我使用我已经实现的这个函数设置状态栏颜色。 在棒棒糖中,我将状态栏设置为黑色。在上面的版本中,我已经设置了我的应用程序主题颜色 功能:-
fun setStatusBarColor(activity: Activity, color: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = ContextCompat.getColor(activity, color)
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1) {
activity.window.statusBarColor = ContextCompat.getColor(activity, android.R.color.black)
}
}
}
public void setStatus(Activity activity, int color){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, color));
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1)
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, android.R.color.black));
}
}
注意:-我在kotlin中实现了上述功能
Java函数:-
fun setStatusBarColor(activity: Activity, color: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = ContextCompat.getColor(activity, color)
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1) {
activity.window.statusBarColor = ContextCompat.getColor(activity, android.R.color.black)
}
}
}
public void setStatus(Activity activity, int color){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, color));
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1)
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, android.R.color.black));
}
}
在这里,我使用我已经实现的这个函数设置状态栏颜色。 在棒棒糖中,我将状态栏设置为黑色。在上面的版本中,我已经设置了我的应用程序主题颜色 功能:-
fun setStatusBarColor(activity: Activity, color: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = ContextCompat.getColor(activity, color)
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1) {
activity.window.statusBarColor = ContextCompat.getColor(activity, android.R.color.black)
}
}
}
public void setStatus(Activity activity, int color){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, color));
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1)
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, android.R.color.black));
}
}
注意:-我在kotlin中实现了上述功能
Java函数:-
fun setStatusBarColor(activity: Activity, color: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = ContextCompat.getColor(activity, color)
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1) {
activity.window.statusBarColor = ContextCompat.getColor(activity, android.R.color.black)
}
}
}
public void setStatus(Activity activity, int color){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, color));
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1)
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, android.R.color.black));
}
}
如果要删除状态栏,请将活动设置为全屏活动。如果要删除状态栏,请将活动设置为全屏活动。