Android WindowManager.LayoutParams.FLAG_LAYOUT_NO_限制不更改状态栏颜色

Android WindowManager.LayoutParams.FLAG_LAYOUT_NO_限制不更改状态栏颜色,android,Android,我在安卓系统中制作了一个画廊应用程序,图像是全屏的。 所以它用在了线下 window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 现在这一切都很好,我的意思是图像现在是全屏的,但当图像背景是白色时问题就会出现,因为状态栏图标的颜色是白色的,所以它看起来好像没有状态栏 为了解决这个问题,我尝试像这样设置状态栏的颜色 win

我在安卓系统中制作了一个画廊应用程序,图像是全屏的。 所以它用在了线下

window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
现在这一切都很好,我的意思是图像现在是全屏的,但当图像背景是白色时问题就会出现,因为状态栏图标的颜色是白色的,所以它看起来好像没有状态栏

为了解决这个问题,我尝试像这样设置状态栏的颜色

window.setStatusBarColor(Color.TRANSPARENT)
但这也不起作用。 我尝试过设置其他值,如

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
但这也不行!您能帮助我在设置状态栏时如何使状态栏颜色透明吗

WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

提前感谢

在设置内容视图之前,请在活动中尝试此操作

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        getWindow().setStatusBarColor(getFactorColor(getResources().getColor(R.color.action_bar_color), 0.4f));
}
其中getFactorColor方法是

public static int getFactorColor(int color, float factor) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= factor;
    color = Color.HSVToColor(hsv);
    return color;
}

将标志设置为“flag_LAYOUT_NO_LIMITS”会使状态栏完全透明,并且不能有任何颜色,请删除这些标志,然后更改颜色

编辑:我是如何实现你想要的(即状态栏位于应用程序内部,具有某种颜色和一定透明度的图层):

你的主题应该有这两个标签

<item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
true
真的
添加此方法

public static void setStatusBarColor(int color, Activity context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = context.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(context.getResources().getColor(color));
    }
}
并像
Utilities.setStatusBarColor(R.color.someColor,context)那样调用它

android有透明的颜色
color.Transparent

或者将其添加到
colors.xml中

#00FFFFFF


希望这会有帮助

setStatusBarColor不影响状态栏图标的着色颜色。您正在查找
View.SYSTEM\u UI\u FLAG\u LIGHT\u STATUS\u BAR
window.decorView.systemui visibility=View.SYSTEM\u UI\u FLAG\u LIGHT\u STATUS\u BAR这会使状态栏图标呈彩色,但不会使状态栏的背景透明或半透明,但您已经知道如何操作该窗口。setStatusBarColor(color.transparent)这行不通!你能告诉我实现我想要的东西的方法吗打开谷歌搜索“安卓透明状态栏”也看看下面的问题:
public static void setStatusBarColor(int color, Activity context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = context.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(context.getResources().getColor(color));
    }
}