首页 > 解决方案 > 如何实现下图中提供的类似 facebook 的弹出窗口?尝试使用警报对话框

问题描述

我想要一个像这样的弹出窗口是 facebook

在此处输入图像描述

大家好, 上面是您可以看到一个弹出按钮的图像。我尝试使用 AleartDialog 实现此目的,但它在中心打开。我只想要它在那个按钮下面。

LayoutInflater inflater = (LayoutInflater) 
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.layout_show_options, null);
 new AlertDialog.Builder(this)
            .setView(view)
            .create().show();

任何帮助,将不胜感激。谢谢

标签: androidxmlandroid-layoutandroid-recyclerviewandroid-alertdialog

解决方案


在您的按钮上使用弹出菜单打开菜单单击 menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/mail"
        android:icon="@drawable/ic_mail"
        android:title="@string/mail" />
    <item android:id="@+id/upload"
        android:icon="@drawable/ic_upload"
        android:title="@string/upload"
        android:showAsAction="ifRoom" />
    <item android:id="@+id/share"
        android:icon="@drawable/ic_share"
        android:title="@string/share" />
</menu>

Java 代码:

 public void showMenu(View v) {
        PopupMenu popup = new PopupMenu(this, v);
        popup.setOnMenuItemClickListener(this);
        popup.inflate(R.menu.actions);
        popup.show();
    }

@Override
public boolean onMenuItemClick(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.archive:
            archive(item);
            return true;
        case R.id.delete:
            delete(item);
            return true;
        default:
            return false;
    }
}

推荐阅读