这已经发布了很多次,但是现有的解决方案似乎都不适用于 API 21+。默认弹出窗口的背景颜色与布局的默认背景颜色完全相同。
This是它的样子(弹出窗口在 gridview 上,但它没有明显的“边界”,看起来有点偏离)
类似于 this是理想的,即具有适当的 Material 设计阴影。有一个 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);
因此,我什至无法更改弹出菜单的背景颜色,更不用说拥有适当的 Material 设计阴影了。
如何给PopupMenu一个阴影?或者我如何至少使用自定义背景可绘制对象(使用它我可以放入 9 补丁阴影)
最佳答案
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>
就是这样。
关于android - 在 API 21+ 中为 PopupMenu 提供阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37270656/