效果如图:
style代码如下:
<resources> <style name="Theme.Example" parent="@style/Theme.AppCompat.<span style="color:#ff0000;">Light</span>"></style> <style name="AppTheme" parent="Theme.Example"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <!-- <item name="android:itemBackground">@drawable/selectable_background_example</item> --> <!-- item背景色 黄色--> <item name="android:itemBackground">#ffff00</item> <!-- list背景色(分割线颜色)红色 --> <item name="android:popupMenuStyle">@style/PopupMenu.Example</item> <item name="popupMenuStyle">@style/PopupMenu.Example</item> </style> <style name="PopupMenu.Example" parent="@style/Widget.AppCompat.Light.PopupMenu"> <!-- <item name="android:popupBackground">@drawable/menu_dropdown_panel_example</item> --> <item name="android:popupBackground">#ff00ff</item> </style> </resources>
http://jgilfelt.github.io/android-actionbarstylegenerator/
DEOM地址:http://download.csdn.net/detail/luohaowang320/7688681
今天在进行代码移植的时候发现,在高版本的机器上,显示的样式,与定制的有区别,期望的是如上图,但实际的是如下图:
popupMenu背景颜色(已经改成红色) 与actionbar 的背景色(主题是Light)任然为 黑色,why?通过对比发现,问题出现在 /res/values-v14 下面的style文件上,系统在api14版本以上的默认样式如下:
<resources> <!-- Base application theme for API 14+. This theme completely replaces AppBaseTheme from BOTH res/values/styles.xml and res/values-v11/styles.xml on API 14+ devices. --> <style name="AppBaseTheme" parent="Theme.AppCompat.<span style="color:#ff0000;">Light.DarkActionBar</span>"> <!-- API 14 theme customizations can go here. --> </style> </resources>默认的是黑色主题,而在这个主题下,在application theme下面改popupMenu的背景色无效,即使在这个appBaseTheme 下改popupMenu的背景色依旧无效,此时要实现前面的效果,需要将 values-14 下面的 style文件的
parent="Theme.AppCompat.Light.DarkActionBar"
parent="Theme.AppCompat.Light"
Light 主题,字体默认是黑色,溢出菜单的字体也是黑色,将溢出菜单的字体改为白色:
在application theme下配置:
<!-- 溢出菜单 字体颜色 --> <!-- 高版本api 上,需要这样设置,否则没效果--> <item name="android:textAppearanceLargePopupMenu">@style/CustomActionBarTextStyle</item> <!-- 第版本api--> <item name="textAppearanceLargePopupMenu">@style/CustomActionBarTextStyle</item>
<style name="mPopupMenuTextStyle" parent="@style/TextAppearance.Widget.AppCompat.ExpandedMenu.Item"> <item name="android:textColor">@android:color/white</item> </style>