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

如何使用Kotlin使状态栏完全透明,并使用深色文本颜色

公冶渝
2023-03-14

我使用Kotlin创建了一个android应用程序,我想知道如何使用Kotlin使状态栏完全透明,使用深色文本颜色。我看到了以下解决方案,但不适用于我使用深色文本透明状态栏和不透明导航栏。以下是我的代码:

   if (VERSION.SDK_INT in 19..20) {
            setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true)
        }
        if (VERSION.SDK_INT >= 19) {
            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        }
        if (VERSION.SDK_INT >= 21) {
            setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false)
            window.statusBarColor = Color.TRANSPARENT
        }

这是style中的定制样式。xml:

<style name="MyStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowLightStatusBar">true</item>
    <item name="android:navigationBarColor">@android:color/black</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

还有我的xml代码:

 <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="189dp"
        app:elevation="0dp"
        android:theme="@style/MyStyle" ....>

我想知道我的代码中的问题在哪里,如何纠正它,使状态栏完全透明,带有深色文本颜色

共有1个答案

汪理
2023-03-14

你必须遵循三个步骤。

>

  • 更新你的风格。xml与主题

    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    

    在主xml中添加

    android:fitsSystemWindows="true"
    

    在您的活动中,在setcontViewadd之前

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Window w = getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }
    

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

    • 因此,我在这里读了几篇关于更改状态栏文本颜色的帖子,但都没用。所以我最初的问题是,状态栏现在在iOS7中是透明的,我希望它是带黑色文本的白色。所以我把它添加到我的viewcontroller中。 好的,现在状态是黑对黑,不能阅读文本,但至少它不是透明的。所以现在我做了下面的事情。 进入plist并添加了这个 然后我将此添加到我的应用程序委托 现在我有一个状态栏是白色的,但是文本是白色的,所以你看不

    • 我注意到当打开我的应用程序时,有两个屏幕可以到达我的第一个颤动屏幕 1-1屏幕有灰色或(50%透明)状态和导航栏黑色和浅色图标。2-2屏幕有100%透明的状态和导航栏和白色图标。 我怎么能让所有的屏幕像第一次颤动屏幕100透明状态和导航栏与黑色图标(亮度暗)。 第一屏 第二屏 第一个颤振筛 风格xml 主要活动。kt 编辑 现在我已经改变了我的代码,第一个屏幕是正确的,但第二个屏幕仍然图标是白色的

    • 有人知道如何使用React Native使Android状态栏透明吗? 不透明,透明。 我也在使用react导航。

    • 我的styles.xml: 我能做的是:

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