首页 > 解决方案 > 如何在片段中隐藏工具栏并保留状态栏颜色?

问题描述

如何在片段中隐藏工具栏并保留状态栏颜色?

我正在尝试使用 onCreateView 中的这一行隐藏工具栏:

(activity as AppCompatActivity).supportActionBar?.hide()

它可以工作,但是状态栏颜色变为灰色。

抱歉,如果我问的是常见问题,但我找不到答案。

UPD

主题.xml

<style name="Theme.PP" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <item name="android:windowTranslucentStatus">true</item>

    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/teal_500</item>
    <item name="colorPrimaryVariant">@color/teal_700</item>
    <item name="colorOnPrimary">@color/black</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">@color/cyan_200</item>
    <item name="colorSecondaryVariant">@color/cyan_700</item>
    <item name="colorOnSecondary">@color/black</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->
</style>

<style name="Theme.PP.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="Theme.PP.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="Theme.PP.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

在 main_activity.xml 中声明的工具栏

        <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@android:color/transparent"
        app:navigationIcon="@drawable/ic_menu"
        style="@style/Widget.MaterialComponents.AppBarLayout.PrimarySurface"
        android:elevation="0dp"
        />

标签: androidkotlin

解决方案


问题在于windowTranslucentStatus您的主题。

如果您阅读文档,它会说:

指示此窗口是否请求半透明状态栏的标志。

所以它不会采用您提供的颜色。您需要删除它才能生效colorPrimaryDarkcolorPrimaryVariant或者其他状态栏颜色才能生效。


推荐阅读