12

我正在为Android 5.0准备我的应用程序,我正在使用最新的兼容性库,以下是我的样式。设计Android 5.0中的弹出菜单

<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/theme_accent</item> 
     <item name="colorAccent">@color/theme_accent_secondary</item> 
    </style> 

    <style name="AppThemeDark" parent="Theme.AppCompat"> 
     <item name="colorPrimary">@color/theme_accent</item> 
     <item name="colorAccent">@color/theme_accent_secondary</item> 
    </style> 
</resources> 

(该动作条颜色被编程设置。)

现在,我想的溢/弹出菜单有深色背景喜欢它曾在全息实现,但我不能让它工作,这里是它的样子:enter image description here

我试过设置popupMenuStyle,但它没有奏效。

如何使弹出式菜单变暗?

+0

你怎么创建溢出菜单,图标? – user802421 2015-03-25 04:37:29

+0

溢出菜单的基本功能忽略图标。 http://stackoverflow.com/questions/5216603/displaying-icon-for-menu-items-of-action-bar-in-honeycomb-android-3-0/5216625#5216625 – user802421 2015-03-26 00:09:00

+0

试试这个:android:showAsAction =“总是“ – animaonline 2015-03-26 09:04:25

回答

6

通过使用这种风格的解决我的问题:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/theme_accent</item> 
    <item name="colorAccent">@color/theme_accent_secondary</item> 
    <item name="actionBarStyle">@style/AbStyle</item> 
    <item name="actionModeBackground">@color/actionmode_bg</item> 
</style> 

<style name="AbStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="elevation">2dp</item> 
    <item name="displayOptions">homeAsUp|showTitle</item> 
    <!--showHome--> 
</style> 

<style name="AppThemeDark" parent="Theme.AppCompat"> 
    <item name="colorAccent">@color/theme_accent_secondary</item> 
    <item name="actionBarStyle">@style/AbStyle</item> 
</style> 

我不得不使用Widget.AppCompat.Toolbar为父actionBarStyle

5

财产popupTheme添加到工具栏:

<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:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/color_primary" 
    app:theme="@style/Theme.AppCompat.Light" 
    app:popupTheme="@style/Theme.AppCompat" /> 

或定义一个新的样式工具栏:使用ActionBar

<style name="MyToolBarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="android:background">@color/green</item> 
    <item name="popupTheme">@style/Theme.AppCompat.Light</item> 
    <item name="theme">@style/Theme.AppCompat</item> 
</style> 
+1

我使用的是一个ActionBar,所以它并没有真正帮助我很多:( – animaonline 2014-11-04 16:35:59

+0

嗨,我们可以更改弹出菜单项的大小吗? – 2015-09-07 02:38:37

19

停止。如果您想将ToolBar设置为ActionBar,请在android-开发人员博客上按照this guide

它实际上提到在黑暗行动吧你的使用情况,并提供了该代码:

<android.support.v7.widget.Toolbar 
    android:layout_height=”wrap_content” 
    android:layout_width=”match_parent” 
    android:minHeight=”@dimen/triple_height_toolbar” 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
+0

为什么我要停止使用操作栏?它不像它已被弃用。 – animaonline 2014-11-05 07:38:41

+5

@animaonline工具栏是ActionBar的超集(简单包装提取的布局)您可以使用任何您已经完成的任何工作,等等。 ActionBar将最终取代。正如您可能已经注意到的那样,当前的支持库在支持较旧的操作栏时有很多错误。 – 2014-11-05 20:19:33

+0

我意识到这一点,我有一个非常复杂的应用程序与许多片段和自定义导航,ActionBar做得很好,我不需要从工具栏的任何新功能,所以我要坚持现在的AB,我感谢你的建议,但他们不会帮助我很多。 – animaonline 2014-11-06 08:36:03

9

不是一个完整的答案,但我发现迄今:

在你需要指定过去版本一个可绘制的(检查https://github.com/StylingAndroid/StylingActionBar代码和教程)

显然,现在是一种颜色。要修改它,你需要指定以下主题:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar"> 
     <item name="android:actionBarPopupTheme">@style/popupNew</item> 
    </style> 

    <style name="popupNew" parent="android:ThemeOverlay.Material.Light"> 
     <item name="android:colorBackground">@color/red</item> 
    </style> 

</resources> 

如果应用到应用的主题就是这样,这可以正常工作。 如果我将android:actionBarPopupTheme添加到我现有的主题中,则不起作用。我想弄明白为什么。

+0

这个工程。但如何修改操作栏弹出窗口的阴影? – Jonguo 2014-12-12 03:20:38

+0

正确的答案是,您的主题将样式调用到“actionBarPopupTheme”,然后在样式中添加“ThemeOverlay”的父项。我这样做,它的工作。谢谢您的回答! – Brandon 2015-07-30 14:37:49