简体   繁体   English

如何自定义菜单项的背景色?

[英]How do I customize menu item's background color?

I'm trying to customize Toolbar 's popup menu. 我正在尝试自定义Toolbar的弹出菜单。 Now I can not set background color of menu item. 现在,我无法设置菜单项的背景颜色。

My styles.xml looks like this: 我的styles.xml看起来像这样:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme.NoActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>

        <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
        <item name="android:actionMenuTextColor">@color/actionbar_text_color</item>
        <item name="android:dropDownListViewStyle">@style/AppTheme.DropDown</item>
        <item name="android:itemTextAppearance">@style/menuItemColor</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/AppTheme.ActionBar</item>
        <item name="actionMenuTextColor">@color/actionbar_text_color</item>
        <item name="dropDownListViewStyle">@style/AppTheme.DropDown</item>
        <item name="itemTextAppearance">@style/menuItemColor</item>
    </style>

    <style name="AppTheme.ActionBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">\
        <item name="titleTextColor">@color/actionbar_text_color</item>
        <item name="subtitleTextColor">@color/actionbar_text_color</item>

        <item name="android:background">@color/actionbar_background</item>

        <!-- Support library compatibility -->
        <item name="background">@color/actionbar_background</item>
    </style>

    <style name="AppTheme.DropDown" parent="@style/Widget.AppCompat.Light.ListView.DropDown">
        <item name="android:background">@color/background_color</item>
        <!-- Support library compatibility -->
        <item name="background">@color/background_color</item>
    </style>

    <style name="menuItemColor">
        <item name="android:textColor">@color/inactive_text_color</item>
    </style>

</resources>

I added ActionBar to activity layout with code 我用代码将ActionBar添加到活动布局中

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

Note: I'm using AppCompat, not Holo or other. 注意:我使用的是AppCompat,而不是Holo或其他。

This may help you,create a style like, 这可以帮助您创建类似的样式,

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@android:color/white</item>

and add it to your main themes.. 并将其添加到您的主要主题。

 <style name="AppTheme.NoActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item> <! added it here
    <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
    <item name="android:actionMenuTextColor">@color/actionbar_text_color</item>
    <item name="android:textColor">@color/text_color</item>

    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/AppTheme.ActionBar</item>
    <item name="actionMenuTextColor">@color/actionbar_text_color</item>
</style>

<style name="AppTheme.ActionBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">\
    <item name="titleTextColor">@color/actionbar_text_color</item>
    <item name="subtitleTextColor">@color/actionbar_text_color</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item> <! added it here
    <item name="android:background">@color/actionbar_background</item>

    <!-- Support library compatibility -->
    <item name="background">@color/actionbar_background</item>
</style>

You have to define style for Overflow Menu too like this : 您还必须为Overflow Menu定义样式,如下所示:

<!-- OverFlow menu Styles -->
<style name="PopupMenuListView" parent="@style/Widget.AppCompat.Light.ListView.DropDown">
    <item name="android:divider">@color/sp_red_500</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:background">@color/white</item>
</style>

and in your parent theme style( Base application theme.) define drop down menu style like this : 并在您的父主题样式(基本应用程序主题。)中定义下拉菜单样式,如下所示:

 <item name="dropDownListViewStyle">@style/PopupMenuListView</item>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android:自定义应用程序的菜单(例如背景颜色) - Android: customize application's menu (e.g background color) 如何在 NavigationView 中自定义项目背景和项目文本颜色? - How to customize item background and item text color inside NavigationView? 如何更改工具栏菜单项的背景色? - How to change toolbar menu item background color? 如何更改 android 中的菜单项背景颜色 - How to change Menu item background color in android 如何自定义Chrome投射菜单项为白色 - How to Customize Chrome cast menu item to white color 如何使用ActionBarCompat更改文本菜单项的颜色? - How do I change the color of a text menu item with ActionBarCompat? 是否可以通过背景颜色和填充来自定义菜单项? - Is it possible to customize the menu items by background color and padding? 我找不到任何地方如何从项目菜单更改为所有活动的背景颜色 - I could not find anywhere how to change color of background from item menu to all activities 如何更改包含导航抽屉中菜单的项目的项目标题字体颜色 - How do I change Item title font color for an Item that contains a menu in Navigation Drawer 如何以编程方式更改列表项的背景? - How do I change list item's background programatically?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM