这已经多次发布,但现有的解决方案似乎都不适用于API 21+。默认弹出窗口的背景颜色与布局的默认背景颜色完全相同。
This就是它的样子(弹出窗口在网格视图上但没有明显的“边界”看起来有点偏离)
像this这样的东西是理想的,即具有适当的材料设计阴影。使用工具栏弹出菜单可以实现solution。没有'普通'的PopupMenu。This旧问题试图完成同样的事情,但现在给定的解决方案不再有效:
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:popupMenuStyle">@style/popupMenuStyle</item>
</style>
<style name="popupMenuStyle" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@color/bgPopumMenu</item>
</style>
既没有设置自定义上下文包装器:
Context wrapper = new ContextThemeWrapper(getContext(), R.style.PopupMenu);
PopupMenu popup = new PopupMenu(wrapper, anchorView);
所以,我甚至无法改变弹出菜单的背景颜色,更不用说有适当的材质设计阴影了。
如何给PopupMenu一个影子?或者我如何至少使用自定义背景drawable(使用我可以放入9补丁阴影)
答案 0 :(得分:1)
将popupMenu样式添加到您的AppTheme: @风格/ PopupMenu的
<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@android:color/white</item>
</style>
的manifest.xml:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
.............
</application>
PS:回答from here
答案 1 :(得分:0)
你需要一个单独的Lollipop +风格
创建另一个资源:res/values-v21/styles.xml
。
添加你的弹出式样并指定所需的高程:
<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@android:color/white</item>
<item name="android:popupElevation">20dp</item>
</style>
就是这样。