android appcompat v22 2 全局主题覆盖汉堡图标的工具栏主题
android appcompat v22 2 Global theme overrides toolbar theme for burger icon
我正在使用支持库 AppCompat v7 22.2。我的应用程序使用我按如下方式设置的浅色主题
<style name="Theme.SM3Theme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/s3m_primary</item>
<item name="colorPrimaryDark">@color/s3m_primary_dark</item>
<item name="colorAccent">@color/s3m_accent</item>
</style>
在我的清单中我有
<application
android:allowBackup="false"
android:icon="@drawable/icon"
android:theme="@style/Theme.SM3Theme"
我希望我的工具栏以深色为主题,这样我就可以在深色背景上获得浅色,就像这样
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sm3_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/s3m_primary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/Theme.AppCompat"
app:popupTheme="@style/ThemeOverlay.AppCompat"
android:gravity="center" >
它几乎可以正常工作。我没有 post 图片所需的 10 声望,但 DrawerLayout 的汉堡图标始终为黑色,以符合全局主题的 Light 主题。后退箭头和标题文本为light/white,与工具栏中指定的主题一致。
我似乎无法改变这一点。在版本 21 上运行良好,但在出现 "IllegalArgumentException: AppCompat does not support the current theme features" 错误之前我不必使用 Theme.AppCompat.Light.NoActionBar。
有人知道如何让它工作吗?发生在 Lollipop 和 Jellybean 4.3
您使用了错误的主题,您需要在工具栏中使用这些主题
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
您应该可以使用 colorControlNormal
属性更改该颜色。尝试定义新样式:
<style name="ToolbarTheme" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/white</item>
</style>
并在工具栏上使用 android:theme="@style/ToolbarTheme"
。
看起来 AppCompat 的 ThemeOverlay
s 将 colorControlNormal
属性设置为 android:textColorPrimary
,这绝对不是我们要找的,因为它会坚持你的主题设置 - 一个轻的,在你的情况下。
在您的应用主题 Theme.SM3Theme 中添加以下内容
<item name="drawerArrowStyle">@style/Widget.SM3Theme.DrawerArrowToggle</item>
创建样式Widget。SM3Theme.DrawerArrowToggle如下:
<style name="Widget.SM3Theme.DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@android:color/white</item>
</style>
我正在使用支持库 AppCompat v7 22.2。我的应用程序使用我按如下方式设置的浅色主题
<style name="Theme.SM3Theme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/s3m_primary</item>
<item name="colorPrimaryDark">@color/s3m_primary_dark</item>
<item name="colorAccent">@color/s3m_accent</item>
</style>
在我的清单中我有
<application
android:allowBackup="false"
android:icon="@drawable/icon"
android:theme="@style/Theme.SM3Theme"
我希望我的工具栏以深色为主题,这样我就可以在深色背景上获得浅色,就像这样
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sm3_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/s3m_primary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/Theme.AppCompat"
app:popupTheme="@style/ThemeOverlay.AppCompat"
android:gravity="center" >
它几乎可以正常工作。我没有 post 图片所需的 10 声望,但 DrawerLayout 的汉堡图标始终为黑色,以符合全局主题的 Light 主题。后退箭头和标题文本为light/white,与工具栏中指定的主题一致。
我似乎无法改变这一点。在版本 21 上运行良好,但在出现 "IllegalArgumentException: AppCompat does not support the current theme features" 错误之前我不必使用 Theme.AppCompat.Light.NoActionBar。
有人知道如何让它工作吗?发生在 Lollipop 和 Jellybean 4.3
您使用了错误的主题,您需要在工具栏中使用这些主题
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
您应该可以使用 colorControlNormal
属性更改该颜色。尝试定义新样式:
<style name="ToolbarTheme" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/white</item>
</style>
并在工具栏上使用 android:theme="@style/ToolbarTheme"
。
看起来 AppCompat 的 ThemeOverlay
s 将 colorControlNormal
属性设置为 android:textColorPrimary
,这绝对不是我们要找的,因为它会坚持你的主题设置 - 一个轻的,在你的情况下。
在您的应用主题 Theme.SM3Theme 中添加以下内容
<item name="drawerArrowStyle">@style/Widget.SM3Theme.DrawerArrowToggle</item>
创建样式Widget。SM3Theme.DrawerArrowToggle如下:
<style name="Widget.SM3Theme.DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@android:color/white</item>
</style>