我在android全屏显示图片的情况下在Android上进行了图库复制。 所以它用在下面的行
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)
但这也不行!您能帮我设置
时如何使状态栏颜色为transparent
?
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
预先感谢
答案 0 :(得分:0)
在“活动”中尝试此操作,然后再设置内容视图
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;
}
答案 1 :(得分:0)
将标志设置为FLAG_LAYOUT_NO_LIMITS会使状态栏完全透明且不能具有任何颜色,请删除这些标志,然后更改颜色。
编辑:我如何实现您想要的(状态栏位于应用程序内部,并具有一定的颜色和一定的透明度):
private fun changeStatusBarToOpaque() {
with(window) {
clearFlags(FLAG_LAYOUT_NO_LIMITS)
clearFlags(TRANSLUCENT_STATUS)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
statusBarColor = getCompatColor(R.color.opacityWhite)
addFlags(FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
}
}
}
您的主题应该具有这两个标签
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
答案 2 :(得分:0)
添加此方法
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
<color name="trans">#00FFFFFF</color>
希望这会有所帮助!