android - 在 API 21+ 中为 PopupMenu 提供阴影

标签 android android-layout

这已经发布了很多次,但是现有的解决方案似乎都不适用于 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/

相关文章:

java - Android 开发...应用程序结构新手

android - ListView 行高太小

android - 如何从视频文件的内容 URI 获取文件路径?

android - java.lang.RuntimeException : h. b.a.g:订阅者类 DashboardActivity 及其父类(super class)没有带有 @Subscribe 注释的公共(public)方法

Android SQLite LIKE 转义通配符

android - 智能指针(Android强指针)引用类型拷贝

java - 如何动态 inflated layout ?

java - 使用类似记事本的编辑器和命令行进行 Android 开发

android - 如何使用等同于特定 dp 的 rQuadTo 创建圆角路径?

java - recyclerview android 中的 2-vertical 和 2-horizo​​ntal 卡片 View