当前位置: 首页 > 知识库问答 >
问题:

Flutter如何使状态和导航栏完全透明

翟学文
2023-03-14

我注意到当打开我的应用程序时,有两个屏幕可以到达我的第一个颤动屏幕

1-1屏幕有灰色或(50%透明)状态和导航栏黑色和浅色图标。2-2屏幕有100%透明的状态和导航栏和白色图标。

我怎么能让所有的屏幕像第一次颤动屏幕100透明状态和导航栏与黑色图标(亮度暗)。

第一屏

第二屏

第一个颤振筛

风格xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- You can name this style whatever you'd like -->
    <style name="AppTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
        <item name="android:windowFullscreen">false</item>
    </style>
</resources>

主要活动。kt

import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}

编辑

现在我已经改变了我的代码,第一个屏幕是正确的,但第二个屏幕仍然图标是白色的,背景也是白色的,我想显示图标为黑色。

风格xml

<resources>
    <!-- You can name this style whatever you'd like -->
    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
        <item name="android:navigationBarColor">@android:color/white</item>
        <item name="android:statusBarColor">@android:color/white</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:windowLightNavigationBar">true</item>
        <item name="android:windowLightStatusBar">true</item>
    </style>
</resources>

主要活动。kt

class MainActivity: FlutterActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val window: Window = getWindow()
        window.setStatusBarColor(Color.TRANSPARENT)
        window.setNavigationBarColor(Color.TRANSPARENT)
        
     
    }
}

状态栏/第二屏

导航栏/第二屏幕

共有1个答案

水渊
2023-03-14

对于颤振屏幕中的透明状态栏

SystemChrome.setSystemUIOverlayStyle(
   SystemUiOverlayStyle(
      statusBarColor: Colors.transparent,
      //color set to transperent or set your own color
      statusBarIconBrightness: Brightness.dark, 
      //set brightness for icons, like dark background light icons
   )
);

对于深色和浅色图标:

AppBar( 
   brightness: Brightness.dark,
   //Brightness.light = Dark icon
   //Brghtness.dark = Light icon
)

参考链接:https://www.fluttercampus.com/guide/12/how-to-make-status-bar-transparent-and-icon-light-dark-flutter/

编辑:如果你想使本机闪屏透明:

启动主题

<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
    <!-- Show a splash screen on the activity. Automatically removed when
         Flutter draws its first frame -->
    <item name="android:windowBackground">@drawable/launch_background</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:windowLightStatusBar">true</item>
</style>

主要活动。kt

import io.flutter.embedding.android.FlutterActivity
import android.os.Bundle
import android.view.Window


class MainActivity: FlutterActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val window: Window = getWindow()
        window.setStatusBarColor(0x00000000)
    }
}

主要的飞奔

void main() {
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    statusBarColor: Color(0x00000000),
    statusBarIconBrightness: Brightness.dark,
  ));
  runApp(MyApp());
}

注:根据颤振问题(https://github.com/flutter/flutter/issues/64001)这只在发布模式下有效,在调试模式下会闪烁。

编辑2:
删除

更新样式。xml

<resources>
    <!-- You can name this style whatever you'd like -->
    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
</resources>

 类似资料:
  • 我想制作一个完全透明的状态栏和导航栏,就像Google Play那样。当我使用窗口设置来实现它时,键盘会覆盖编辑文本。 当此代码使用键盘输入覆盖的编辑文本时: 此外,该代码并没有使其完全透明,它只是使其半透明 还是这个

  • 我在试着做一个Android发射器。我想实现一个完全透明的状态栏和导航栏,这里是我的主题xml文件。 最后两项不管用,Lollipop上还有影子。 我想实现的(新星发射器): 如何让状态栏和导航栏“透明”而不是“半透明”?

  • 我一直在寻找一种方法,在状态栏完全透明(而不是半透明)的情况下重新给导航栏上色。要使状态栏完全透明,需要将布局标志设置为无限制,但这也会使导航栏失去颜色。有没有办法做到这一点?

  • 我想让我的状态栏透明,但也没有图标。我设法让它消失了,但它留下了一条没有填充背景的线。我想改变这一点,这样我就可以在没有任何图标的情况下看到背景。 另外,我正在小米Redmi Note 8T上测试它 代码(结果见第一张图片) 主要活动。kt 都themes.xml 下面是这一行的样子: 我希望它看起来像下图,但没有状态栏的图标: 编辑:我想,是手机让它变成了这样(中间有一个摄像头),可能黑线是为了

  • 只有在第一次打开应用程序时,半透明的状态栏才会出现问题。请看屏幕截图: http://i1335.photobucket.com/albums/w673/ductruongcntt/Screenshot_2014-06-26-14-17-26_zps1e9a56f4.png 以下是我使用的样式的XML,其中包括半透明状态栏: 我的主题是:

  • 我正在做一个需要状态栏和导航栏透明的项目。 我已经使状态栏透明,但我不能做同样的导航栏。 有人能帮我解决这个问题吗?谢谢 我设定了这样一种风格: 注意:我只是按照风格做的。xml文件,因为我已经有了使用该标志的完整版本