我试图在我一直在使用以下代码的Toolbar
和窗口级别ActionBar
上应用标准样式:
<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的Toolbar
都非常适用,但是在将相同样式应用于构建的ActionBar
窗口时遇到了问题。
这是基于XML的工具栏的预期结果和工作示例:
但是,一旦我尝试使用以下方法在窗口的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
:
任何人都可以提出这种情况的原因并提出解决方案吗?
答案 0 :(得分:0)
我似乎忽略了默认的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
可以解决此问题。