我想让我的Flutter app在Android中占据整个屏幕,同时仍然同时显示状态栏和导航栏,并且两者都是透明的,以实现iOS中的全面屏外观。
状态栏的颜色可以很容易地改变,但现在我面临的问题是如何让应用程序填满屏幕,同时使导航栏透明。
默认情况下,app根本不会绘制在导航栏下方(我已经将状态栏颜色设置为透明):
以下是我尝试过的一些解决方案:
解决方案摘自此处:https://stackoverflow.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
中的填充和插入值现在为0,因此我必须通过使用methodchannel
手动获取状态栏和导航栏高度。此外,这还创建了一个关于应用程序切换器的奇怪bug,如下所示(看看内容是如何跳转的,右上方的调试横幅是如何拉伸的):
<item name="android:windowTranslucentNavigation">true</item>
结果:
这是最接近我想要达到的目标。mediaquery.of(context).padding.top
正确显示顶部填充,而mediaquery.of(context).viewinsets.bottom
正确显示navbar的高度。在应用程序切换器中也没有奇怪的bug。唯一的问题是navbar是半透明的,不是透明的。
下面是上面显示的示例应用程序的回购:https://github.com/czx123/navbar
如果Flutter能够提供开箱即用的功能就好了。但事实并非如此,那么有没有其他更好的方法来实现这一点呢?
看来我们必须等待Flutter团队正式实现这个特性:
https://github.com/Flutter/Flutter/issues/40974
https://github.com/Flutter/Flutter/issues/34678
这条评论也完美地概括了Android中当前的行为:https://github.com/flutter/flutter/issues/34678#issuecomment-536028077
这可能有些晚了,但flutter的最新版本1.12提供了一个将应用程序绘制在导航栏后面的特性,因此下面的代码将使透明导航栏与应用程序完全扩展到导航栏后面,
Scaffold(
extendBodyBehindAppBar: true, //this ensures that the body is drawn behind the navigation bar as well
appBar: AppBar(
backgroundColor: Colors.transparent,
title: Text('Transparent Bar'),
),
body: Container(
color: Colors.blue,
),
);
因此,如果您使用Flutter,程序是:
AppBar()
颜色设置为透明。extendbeyondappbar
设置为true
。高度
设置为0。例如:
null
return Scaffold(
extendBodyBehindAppBar: true,
appBar: AppBar(
elevation: 0,
)
我想在我的应用程序上有一个透明的状态栏(所以背景在后面),但我希望底部的导航栏保持黑色。 我可以通过设置
我一直在Stack上寻找一些关于这个的指导,但是没有一个问题被问到这么深,答案也没有更新到最新的Swift版本,甚至没有更新到最新的Swift版本。 这是我所拥有的: 带有两个栏项目的导航控制器: 我的目标是:使导航根视图控制器的导航栏透明(但按钮和标题仍然可见),而不是子导航——没有奇怪的细微差别,比如之前的彩色闪光,或切断导航栏(参见gif) 我尝试过的事情: 在<代码>视图将出现(u动画:B
我正在创建一个应用程序,我在互联网上浏览,我想知道他们是如何使这个透明的UINavigationBar像这样: 我在appdelegate中添加了以下内容: 但这只会让它看起来像: 如何使导航栏像第一个图像一样透明?
我想制作一个完全透明的状态栏和导航栏,就像Google Play那样。当我使用窗口设置来实现它时,键盘会覆盖编辑文本。 当此代码使用键盘输入覆盖的编辑文本时: 此外,该代码并没有使其完全透明,它只是使其半透明 还是这个
我想将导航栏更改为完全透明,如下图所示。 我试过
导航栏是一个将商标、导航以及别的元素简单放置到一个简洁导航页头的的包裹。它很容易扩展,而且,在折叠板插件的帮助下,它可以轻松与幕后内容整合。 基础 这些是你开始使用导航条之前需要知道的东西: 导航条要求一个包裹的.navbar以及一个配色方案类(可以是.navbar-default或者.navbar-inverse)。 当在一个导航条中使用多个组件时,必须用一些 对齐类 。 导航条以及它们的内容默