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));
}
}