样式appcompat-v7工具栏菜单背景

时间:2015-02-18 18:45:50

标签: android android-layout android-toolbar

我正在尝试将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。

有谁知道我该怎么办?如果无法使用样式,还有其他方法可以实现吗?

3 个答案:

答案 0 :(得分:35)

将其添加到工具栏元素

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。后者将应用于没有背景的所有内容(此处为菜单本身和每个菜单项),前者仅适用于弹出菜单。

更新:同样适用于textColorPrimarytextColor

  • 弹出菜单项定义android:textColor="?android:textColorPrimary"
  • android:textColorPrimary是一个主题属性,它是在主题上定义的。
  • android:textColor样式属性,已在小部件上定义。
  • 如果我们在主题中定义android:textColor,则会将其应用于未定义自己的android:textColor的每个小部件。

答案 1 :(得分:1)

使用android属性时,不要使用AppCompat命名空间。修改您的代码如下:

<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar">
       <item name="textColorPrimary">@color/white</item>
       <item name="textColorSecondary">@color/cian</item>
</style>

答案 2 :(得分:1)

将其添加到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>