【问题标题】:How to achieve a transparent statusbar after migrating to Material Design themes?迁移到 Material Design 主题后如何实现透明状态栏?
【发布时间】:2021-10-24 20:53:35
【问题描述】:

我正在将我的应用主题迁移到 Material Design 主题,并且在某些需要透明状态栏的情况下遇到了问题(例如,当使用 CollapsingToolbarLayout 时,工具栏在展开时应该是透明的折叠时它应该是主要的深色)。

在迁移之前,我的主题是这样的,所以我只为需要透明状态栏的主题叠加定义了android:statusBarColor,而在其他任何地方,状态栏默认都是主要的深色。

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

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

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

</resources>

迁移后我正在使用以下内容,由于以下problem,我必须在我的基本主题中明确定义android:statusBarColor

<resources>

    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
        <item name="colorSecondary">@color/colorAccent</item>

        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
    </style>

    <style name="AppTheme.TransparentStatusBar">
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.MaterialComponents.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.MaterialComponents.Light" />

</resources>

但由于似乎不再存在隐式默认值,这意味着在我应用 AppTheme.TransparentStatusBar 主题的所有情况下,我都会得到一个蓝色(Material Design 默认颜色)状态栏。

例如,当我的CollapsingToolbarLayout 展开时(如预期的那样),我有一个透明的状态栏,但是当它折叠时,我有一个蓝色的状态栏(我希望它至少是我的基本主题的默认颜色) .

toolbar expanded

toolbar collapsed

有没有办法解决这个问题?

【问题讨论】:

    标签: android material-design android-collapsingtoolbarlayout material-components-android android-statusbar


    【解决方案1】:

    我找到了一个部分解决方案,至少可以解决我的CollapsingToolbarLayout 问题:当我将app:statusBarScrim="?attr/colorPrimaryVariant" 添加到它的定义中时,我可以恢复我的主题迁移之前的外观,即我有根据我的主题的透明状态栏在展开状态和折叠状态下的稀松布颜色。

    如果有人对更全局的修复有想法,我将保留这个问题,因为透明状态栏还有其他问题。例如,我仍然无法实现在透明状态栏下很好地融合的DrawerLayout

    【讨论】:

      猜你喜欢
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2019-02-24
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多