我只是想在 Gmail 应用程序中实现与弹出菜单相同的功能,锚定到右上角的溢出按钮。为此,我使用了与 android 的谷歌教程相同的代码 Android popup menu ,但对我来说,在操作栏边缘的顶部显示弹出菜单,而不是在其下方。如果您注意到 gmail 溢出的弹出菜单,您会看到弹出菜单出现在操作栏的边缘。
这是我用于弹出菜单的 xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/item1"
android:title="lablab"/>
<item
android:id="@+id/item2"
android:title="lablab"/>
</menu>
下面是我的 Activity :
public void showFontSetting(View view) {
PopupMenu popup = new PopupMenu(this, view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu, popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.item1:
Toast.makeText(Index.this,
"You Clicked : " + item.getTitle(),
Toast.LENGTH_SHORT).show();
break;
case R.id.item2:
break;
}
return true;
}
});
}
最佳答案
要仅重叠,请使用此方法:
PopupMenu popupMenu = new PopupMenu(getContext(), this, Gravity.NO_GRAVITY, R.attr.actionOverflowMenuStyle, 0);
要获得具有明亮背景和对偏移量的详细控制的 PopupMenu,请使用此方法:
样式.xml
<style name="PopupMenuOverlapAnchor" parent="@style/Theme.AppCompat.Light">
<item name="android:overlapAnchor">true</item>
<item name="android:dropDownVerticalOffset">0dp</item>
<item name="android:dropDownHorizontalOffset">0dp</item>
</style>
代码:
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(getContext(), R.style.PopupMenuOverlapAnchor);
PopupMenu popupMenu = new PopupMenu(contextThemeWrapper, this);
关于android - 如何更改 android 溢出按钮上弹出菜单的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516247/