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

Setting a custom background color on Actionbar ShareActionProvider dropdownlist

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

更改了全息操作栏颜色

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

非常感谢您的宝贵时间。

您将需要覆盖属性 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,您就大功告成了。

输出:

顺便说一句,在上面的截图中,我使用了一个ColorDrawable作为背景。这就是为什么边角不是圆的,也没有阴影的原因。为此,您需要创建一个 nine-patch 可绘制对象,类似于 android 使用的对象。这是它的样子:

我的 ColorDrawable 被定义为:

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

更多信息:

Android 本身使用状态选择器绘制 ListPopupWindow 的背景。选择器定义了两种状态:state_above_anchor & 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" />

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

您可以通过 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>