android - 如何更改 android 溢出按钮上弹出菜单的位置?

标签 android popup android-actionbar android-menu

我只是想在 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/

相关文章:

android - 如何使应用程序的背景图像重复

windows - DOS 批处理文件 - 显示带有两个选项的弹出消息

angular - 导入 PopupModule.forRoot() 时出错

android - 工具栏中的 Material "close"按钮而不是返回

Android:如何检测点击自定义 SearchView 元素

android - 在 android 应用程序的 firebase 数据库中检索子数组列表

java - Android 中两个 View 的 block 居中

javascript - 防止 linkedin 和 twitter 共享在同一窗口中打开

android-actionbar - Android中如何自定义ActionBar(ActionbarSherlock)?

Android 操作栏方向 RTL