【问题标题】:Toolbar default style and Navigation Icon工具栏默认样式和导航图标
【发布时间】:2016-07-04 18:19:26
【问题描述】:

我在AppBarLayout 中有一个Toolbar。 这是两个视图的 XML:

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbarlayout"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:theme="@style/App.ThemeOverlay.Toolbar">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="?attr/actionBarSize"
        android:layout_width="match_parent"/>

</android.support.design.widget.AppBarLayout>

与主题:

<style name="App.ThemeOverlay.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>

主题应用于Activity

<style name="App.Theme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@android:color/white</item>
</style>

现在,我想为工具栏应用自定义titleTextAppearance

我知道我可以在布局的 XML 中使用 app:titleTextAppearance,但我想从主题配置它,以便我的应用程序的每个工具栏都具有相同的样式,而无需在每个布局中设置文本外观。

在AppCompat源代码中挖掘了一下,发现Toolbar使用了当前主题的toolbarStyle作为默认主题。

此样式的默认值为Widget.AppCompat.ActionBar

所以我的第一个猜测是在我的主题覆盖中覆盖这个样式,并在这个新样式中更改titleTextAppearance

<style name="App.ThemeOverlay.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="toolbarStyle">@style/App.Style.Toolbar</item>    
</style>

<style name="App.Style.Toolbar" parent="Widget.AppCompat.ActionBar">
    <item name="titleTextAppearance">@style/App.TextAppearance.Toolbar.Title</item>
</style>

<style name="App.TextAppearance.Toolbar.Title" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textColor">#00FF00</item> (this is some green)
    <item name="android:textAllCaps">true</item>
</style>

这实际上覆盖了我工具栏的titleTextAppearance,但它也破坏了导航图标:

我的配置有什么问题会破坏导航图标?

为了记录,我尝试删除主题覆盖的toolbarStyle,并直接在工具栏的布局的XML中使用style="@style/App.Style.Toolbar"

这会正确应用标题文本外观并且不会破坏导航图标,但这不是最佳选择,因为我必须将样式应用于我的应用程序的每个工具栏,这就是我从一开始就试图避免的.

感谢您的帮助, 皮埃尔

【问题讨论】:

    标签: android toolbar android-appcompat


    【解决方案1】:

    您的默认样式应该扩展Widget.AppCompat.Toolbar,而不是Widget.AppCompat.ActionBar。之后它就可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 2018-08-09
      • 2016-03-06
      相关资源
      最近更新 更多