技术标签:
【中文标题】如何让 Flutter 应用在 android 导航栏后面绘制并使导航栏完全透明?【英文标题】:How to make flutter app draw behind android navigation bar and make navigation bar fully transparent?【发布时间】:2019-10-29 16:21:20【问题描述】:
我想让我的 Flutter 应用在android中占据整个屏幕,同时仍然显示状态栏和导航栏,并且它们都是透明的,以实现ios中的全屏外观。
状态栏颜色可以轻松更改,但现在我遇到了让应用填满屏幕并同时使导航栏透明的问题。
默认情况下,应用根本不绘制在导航栏下方(我已将状态栏颜色设置为透明):
以下是我尝试过的一些解决方案:
1) 在MainActivity的onCreate函数中设置窗口的flags
从这里获取的解决方案:https://***.com/a/31596735
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
这种实现了我想要的,但它有几个问题。 MediaQuery
中的 padding 和 inset 值现在为 0,因此我必须通过使用 MethodChannel
手动获取状态栏和导航栏高度。此外,这会产生一个关于应用程序切换器的奇怪错误,如下所示(查看内容如何跳转和右上角的调试横幅被拉伸):
2) 在styles.xml中添加半透明导航
<item name="android:windowTranslucentNavigation">true</item>
结果:
这是最接近我想要实现的目标。 MediaQuery.of(context).padding.top