在 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>
我正在尝试为 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>