【问题标题】:Applying actionBarStyle clears ActionBar Style应用 actionBarStyle 清除 ActionBar 样式
【发布时间】:2019-05-22 14:45:28
【问题描述】:

我正在尝试在我的Toolbars 和窗口级别ActionBars 上应用标准样式我一直在使用以下代码:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar.Bridge">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/pallet_aqua_rich</item>
    <item name="colorPrimaryDark">@color/pallet_aqua_rich_dark</item>
    <item name="colorAccent">@color/pallet_orange_vivid</item>
    <item name="fontFamily">@font/krub</item>

    <!-- Custom Application Theme attrs -->
    <item name="appColorPrimary">@color/pallet_aqua_rich</item>
    <item name="appColorPrimaryDark">@color/pallet_aqua_rich_dark</item>
    <item name="appColorPrimaryOpacity80">#DE017d69</item>
    <item name="appColorSecondary">@color/pallet_orange_vivid</item>
    <item name="appColorSecondaryDark">@color/pallet_orange_rich</item>
    <item name="appColorSecondaryOpacity50">#80ea6430</item>

    <item name="appColorSecondaryLight">#EB7242</item>
    <item name="appColorSecondaryLighter">#F19C7B</item>
    <item name="appColorSecondaryLightStatusBar">#D6683C</item>

    <!-- Toolbar Styling -->
    <item name="android:toolbarStyle">@style/AppTheme.AppBarOverlay</item>
    <item name="toolbarStyle">@style/AppTheme.AppBarOverlay</item>

</style>

<style name="AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar">
    <item name="android:colorControlNormal">#FFFFFF</item>
    <item name="android:contentInsetStart">0dp</item>
    <item name="contentInsetStartWithNavigation">0dp</item>

    <item name="android:titleTextStyle">@style/AppTheme.Toolbar.TitleText</item>
    <item name="titleTextStyle">@style/AppTheme.Toolbar.TitleText</item>

    <item name="android:gravity">center_vertical</item>

    <item name="android:homeAsUpIndicator">@drawable/ic_chevron_left</item>
    <item name="homeAsUpIndicator">@drawable/ic_chevron_left</item>
</style>

<style name="AppTheme.ActionBar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textSize">15sp</item>
    <item name="fontFamily">@font/krub_semi_bold</item>
    <item name="android:textColor">#FFFFFF</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="Widget.AppCompat.Toolbar">
    <item name="android:colorControlNormal">#FFFFFF</item>
    <item name="android:contentInsetStart">0dp</item>
    <item name="contentInsetStartWithNavigation">0dp</item>

    <item name="android:textAppearance">@style/AppTheme.Toolbar.TitleText</item>
    <item name="android:textViewStyle">@style/AppTheme.Toolbar.TitleText</item>
    <item name="android:titleTextAppearance">@style/AppTheme.Toolbar.TitleText</item>

    <item name="titleTextAppearance">@style/AppTheme.Toolbar.TitleText</item>

    <item name="android:gravity">center_vertical</item>
</style>

<style name="AppTheme.Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">15sp</item>
    <item name="fontFamily">@font/krub_semi_bold</item>
    <item name="android:textColor">#FFFFFF</item>
</style>

上述样式非常适合我所有基于 XML 的 Toolbars,但我在尝试将相同样式应用于构建的窗口 ActionBar 时遇到问题。

这是基于 XML 的工具栏的预期结果和工作示例:

但是,一旦我尝试在 Window 的 ActionBar 中复制工具栏样式,使用:

    <!-- Window ActionBar Styling -->
    <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
    <item name="actionBarStyle">@style/AppTheme.ActionBar</item>

在AppTheme 内,结果如下:

依稀可以看到,正确的homeAsUpIndicator和titleTextStyle已经按要求应用了,但是没有背景。如果我删除 actionBarStyle 项目,它会应用背景,但无法应用 titleTextStyle 和 homeAsUpIndicator:

谁能说明为什么会发生这种情况并提出解决办法?

【问题讨论】:

    标签: android android-actionbar android-toolbar android-styles


    【解决方案1】:

    看来我忽略了默认的Widget.AppCompat.ActionBar 携带:

    <style name="Base.Widget.AppCompat.ActionBar" parent="">
        <item name="background">@null</item>
        <item name="backgroundStacked">@null</item>
        <item name="backgroundSplit">@null</item>
    </style>
    

    将AppTheme.ActionBar 的父级更改为Widget.AppCompat.ActionBar.Solid 可以解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2017-11-14
      相关资源
      最近更新 更多