在Actionbar ShareActionProvider下拉列表中设置自定义背景颜色

时间:2015-01-12 13:33:31

标签: android drop-down-menu android-actionbar shareactionprovider

我正在尝试为ShareActionProvider下拉列表设置自定义背景颜色,我已使用此http://jgilfelt.github.io/android-actionbarstylegenerator/更改了holo操作栏颜色

正如您可以在下面的图像中看到突出显示的点我可以将操作栏背景颜色更改为橙​​色,但ShareActionProvider下拉列表背景颜色仍为灰色。有没有人知道如何更改它在styles.xml中编辑我的主题?

enter image description here

非常感谢你的时间。

2 个答案:

答案 0 :(得分:6)

您需要覆盖属性listPopupWindowStyle

从它的外观来看,您正在使用Theme.Holo.Light。将其添加到您的基本主题:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
    ....
    <item name="android:listPopupWindowStyle">@style/MyListPopupWindowStyle</item>
</style>

现在像这样定义MyListPopupWindowStyle

<style name="MyListPopupWindowStyle" parent="@android:style/Widget.Holo.Light.ListPopupWindow">
    <item name="android:popupBackground">@drawable/list_popup_background</item>
</style>

接下来,创建可绘制的list_popup_background,您就可以完成了。

<强>输出

enter image description here

顺便说一下,在上面的截图中,我使用了ColorDrawable作为背景。这就是为什么,角落没有圆角,并且没有投影。为此,你需要创建一个九补丁drawable,类似于android使用的那个。这是它的样子:

enter image description here

我的ColorDrawable定义为:

<drawable name="list_popup_background">#33ffffff</drawable>

更多信息

Android本身使用一个状态选择器可绘制ListPopupWindow的背景。选择器定义了两种状态:state_above_anchor&amp; state_below_anchor(默认情况下可以访问):

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_above_anchor="true" android:drawable="@android:drawable/menu_popup_panel_holo_light" />
    <item android:drawable="@android:drawable/menu_dropdown_panel_holo_light" />

定义类似的东西可能是个好主意。

答案 1 :(得分:1)

您可以通过 colorBackground 属性对其进行着色。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="actionBarTheme">@style/AppTheme.ActionBar</item>
</style>

<style name="AppTheme.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:colorBackground">@color/red</item>
</style>