样式 appcompat-v7 工具栏菜单背景
Style appcompat-v7 Toolbar menu background
我正在尝试设置我的 appcompat-v7 工具栏的样式,以便为我的溢出菜单设置不同的背景颜色。
我尝试为我的应用程序使用主题,为我的工具栏使用样式,但我无法实现。
这是我的工具栏:
<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/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_width="match_parent"
app:theme="@style/AppToolbarTheme"
android:layout_height="wrap_content">
这是我创建的样式:
<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/cian</item>
</style>
我的主题是延伸Theme.AppCompat.Light。
有人知道我该怎么做吗?如果无法使用样式,还有其他方法可以实现吗?
在使用 AppCompat
属性时不要使用 android
命名空间。修改您的代码如下:
<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
<item name="textColorPrimary">@color/white</item>
<item name="textColorSecondary">@color/cian</item>
</style>
将此添加到您的工具栏元素
app:popupTheme="@style/ThemeOverlay.YourPopup"
然后在你的styles.xml
定义弹出菜单样式
<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/mtrl_white_100</item>
<item name="android:textColor">@color/mtrl_light_blue_900</item>
</style>
<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/mtrl_white_100</item>
<item name="android:textColorPrimary">@color/mtrl_light_blue_900</item>
</style>
请注意,您需要使用 android:colorBackground
而不是 android:background
。后者适用于所有没有背景的东西(这里是菜单本身和每个菜单项),前者仅适用于弹出菜单。
更新:同样适用于textColorPrimary
和textColor
。
- 弹出菜单项定义
android:textColor="?android:textColorPrimary"
。
android:textColorPrimary
是一个 theme 属性,它是在主题上定义的。
android:textColor
是一个 style 属性,它是在小部件上定义的。
- 如果我们在主题中定义了
android:textColor
,它将应用于每个未定义自己的 android:textColor
的小部件。
将此添加到 activity.xml 文件中的工具栏:-
app:popupTheme="@style/ThemeOverlay.YourApp"
然后在您的 styles.xml 中添加:-
<style name="ThemeOverlay.YourApp" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@android:color/darker_gray</item>
<item name="android:textColorPrimary">@color/TextColorPrimary</item>
</style>
我正在尝试设置我的 appcompat-v7 工具栏的样式,以便为我的溢出菜单设置不同的背景颜色。 我尝试为我的应用程序使用主题,为我的工具栏使用样式,但我无法实现。
这是我的工具栏:
<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/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_width="match_parent"
app:theme="@style/AppToolbarTheme"
android:layout_height="wrap_content">
这是我创建的样式:
<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/cian</item>
</style>
我的主题是延伸Theme.AppCompat.Light。
有人知道我该怎么做吗?如果无法使用样式,还有其他方法可以实现吗?
在使用 AppCompat
属性时不要使用 android
命名空间。修改您的代码如下:
<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
<item name="textColorPrimary">@color/white</item>
<item name="textColorSecondary">@color/cian</item>
</style>
将此添加到您的工具栏元素
app:popupTheme="@style/ThemeOverlay.YourPopup"
然后在你的styles.xml
定义弹出菜单样式
<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/mtrl_white_100</item>
<item name="android:textColor">@color/mtrl_light_blue_900</item>
</style>
<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/mtrl_white_100</item>
<item name="android:textColorPrimary">@color/mtrl_light_blue_900</item>
</style>
请注意,您需要使用 android:colorBackground
而不是 android:background
。后者适用于所有没有背景的东西(这里是菜单本身和每个菜单项),前者仅适用于弹出菜单。
更新:同样适用于textColorPrimary
和textColor
。
- 弹出菜单项定义
android:textColor="?android:textColorPrimary"
。 android:textColorPrimary
是一个 theme 属性,它是在主题上定义的。android:textColor
是一个 style 属性,它是在小部件上定义的。- 如果我们在主题中定义了
android:textColor
,它将应用于每个未定义自己的android:textColor
的小部件。
将此添加到 activity.xml 文件中的工具栏:-
app:popupTheme="@style/ThemeOverlay.YourApp"
然后在您的 styles.xml 中添加:-
<style name="ThemeOverlay.YourApp" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@android:color/darker_gray</item>
<item name="android:textColorPrimary">@color/TextColorPrimary</item>
</style>