Java 完全透明的导航栏和状态栏

Java 完全透明的导航栏和状态栏,java,android,xml,uinavigationbar,android-statusbar,Java,Android,Xml,Uinavigationbar,Android Statusbar,我想做一个完全透明的状态栏和导航栏,就像GooglePlay做的那样。当我使用窗口设置来实现它时,键盘会覆盖编辑文本 当此代码使用键盘输入覆盖的编辑文本时: getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 此外,此代码并没有使其完全透明,它只是使其半透明 g

我想做一个完全透明的状态栏和导航栏,就像GooglePlay做的那样。当我使用窗口设置来实现它时,键盘会覆盖编辑文本

当此代码使用键盘输入覆盖的编辑文本时:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                      WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
此外,此代码并没有使其完全透明,它只是使其半透明

getWindow().setNavigationBarColor(Color.TRANSPARENT)
或此

<item name="android:navigationBarColor">@android:color/transparent</item>
@android:color/transparent
我需要一扇这样的窗户:
您需要的是这样的东西:

类Utils{ 静态void enableInmersiveMode(活动行为,布尔drawBehindNavBar){ View rootView=act.getWindow().getDecorView().getRootView(); int uiFlags=rootView.getSystemUiVisibility(); int标志=0; 如果(drawBehindNavBar){flags=View.SYSTEM\u UI\u FLAG\u LAYOUT\u HIDE\u NAVIGATION;} flags=flags | uiFlags | View.SYSTEM(系统)UI)FLAG(布局)STABLE | View.SYSTEM(系统)UI(旗帜)布局(布局)FULLSCREEEN; rootView.setsystemivilibility(标志); } } 在活动的
onCreate
中:


@凌驾
创建时无效(束b){
Utils.enableInmersiveMode(这是真的);
super.onCreate(b);
//setContentView和此处的其余代码。。。
}

请记住,之后的视图将位于系统UI后面,您需要动态地向第一个和最后一个
视图添加填充,以便用户可以与它们交互。

希望您可以在
主路径/res/values/styles.xml中尝试此操作
这适用于任何android设备中的透明状态栏导航栏

@android:color/transparent
@android:彩色/透明
还有一件事,如果你想尝试透明度和浮动的酒吧,你可以使用这个,但背景的导航栏将减少50%的透明度

true
当您要取消设置半透明导航浮动时,此浮动可在状态栏导航栏之间调整屏幕

true

不幸的是,它看起来与默认窗口相同。请确保您没有在代码中的任何位置设置颜色。你的应用主题也应该有
@android:color/transparent
@android:color/transparent
,为什么不让导航栏颜色与布局的其余部分相同呢?例如,
@color/colorPrimary
colorPrimary或与主布局匹配的颜色。我已经尝试过了,这是不够的。例如当我和其他UI组件(如抽屉布局)交互时,导航栏的颜色无法集成到布局的背景中。它很有用,但需要的不仅仅是它。Idk你所说的集成到后台是什么意思。抽屉打开时,导航栏和状态栏将变暗。我相信这是命中注定的。