Применение actionBarStyle очищает стиль ActionBar - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь применить стандартный стиль как к моим Toolbar s, так и к уровню окна ActionBar s. Я использую следующий код:

<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 s, но у меня возникают проблемы при попытке применить те же стили к построенному окну ActionBar.

Это желаемый результат и рабочий пример панели инструментов на основе XML:

XML Toolbar

Однако, как только я пытаюсь скопировать стиль панели инструментов в ActionBar окна, используя:

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

в пределах AppTheme, это результат:

Problem Example

Как вы можете видеть слабо, правильные homeAsUpIndicator и titleTextStyle были применены по мере необходимости, нонет фона.Если я удаляю элемент actionBarStyle, он применяет фон, но затем не может применить titleTextStyle и homeAsUpIndicator:

Half way house

Может кто-нибудьпредложить, почему это происходит, и предложить исправить?

1 Ответ

0 голосов
/ 22 мая 2019

Похоже, я упустил значение по умолчанию 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 устраняет проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...