我正在使用默认的弹出菜单,并期望相同的行为。一切正常。我担心的是有关弹出菜单的呈现。我的弹出菜单停留在屏幕右侧。

我想要的是YouTube上的YouTube应用所使用的行为。 android - 边际实现弹出菜单-LMLPHP

我主要无法为弹出菜单提供适当的边距。请帮忙。
我尝试过将重力提供给弹出菜单。但是弹出菜单会停留在屏幕右侧。

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

最佳答案

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

首先将重力设置为重力。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>

10-08 01:28