android - 实现带边距的弹出菜单

标签 android popupmenu

我正在使用默认弹出菜单并期待相同的行为。一切正常。我关心的是弹出菜单的呈现。我的弹出菜单固定在屏幕右侧。

我想要 Android 版 Youtube 应用所使用的行为。 enter image description here

我主要无法为弹出菜单提供右边距。请帮忙。 我试过为弹出菜单提供重力。但是弹出式菜单固定在屏幕右侧。

PopupMenu popupMenu = new PopupMenu(mContext, anchor, Gravity.LEFT);
popupMenu.getMenuInflater().inflate(R.menu.menu_edit_accessory, popupMenu.getMenu());

最佳答案

您可以使用以下属性更改 PopupMenu 的位置: 重力dropDownHorizo​​ntalOffsetdropDownVerticalOffset

首先将重力设置为Gravity.END

popup.setGravity(Gravity.END);

然后通过创建样式来更改下拉偏移量

<style name="MyPopupMenu" parent="@style/Widget.AppCompat.PopupMenu">
    <item name="android:dropDownHorizontalOffset">-4dp</item>
    <item name="android:dropDownVerticalOffset">4dp</item>
</style>

如果你想重叠 anchor View 使用

parent="@style/Widget.AppCompat.PopupMenu.Overflow"

最后将 MyPopupMenu 应用到您的主题

<item name="popupMenuStyle">@style/MyPopupMenu</item>

关于android - 实现带边距的弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449251/

相关文章:

java - 将弹出菜单与 RecyclerView 项目中的右侧对齐

list - 如何使用弹出菜单删除项目列表 - flutter

delphi - 阻止 VCL 子控件继承父弹出菜单

Android更改弹出菜单的背景颜色

在 OSX 上运行 ./gradlew 时 JAVA_HOME 设置为无效目录

android - 如何使用媒体记录器生成多个文件?

java - 数组初始化: int versus other Objects

android - 在 Android 中的 BaseAdapter 的弹出菜单中重命名 ListView 项后更新 ListView

安卓/Admob : Can I set a list of testing devices in the Layout XML for the AdView?

android - 如何创建动画