Android PopupMenu 弹出菜单

PopupMenu (弹出菜单) 是 一个类似于 PopupWindow 的东东,可以很方便的在指定 View 下显示一个弹出菜单,而且菜单选项可以来自于 Menu 资源

PopupMenu (弹出菜单)

创建一个 PopupMenu 可以通过实例化 PopupMenu 来实现

PopupMenu(Context context, View anchor)

PopupMenu(Context context, View anchor, int gravity)

PopupMenu(Context context, View anchor, int gravity, int popupStyleAttr, int popupStyleRes)

然后通过 getMenu() 方法获得 Menu ,设置完目录后调用 show() 方法显示出来

范例

废话不多说了,直接上最后的效果图


  1. 创建一个 空的 Android 项目 cn.twle.android.SubMenu

  2. 修改 activity_main.xml 添加一个 按钮 ( Button )

    <?xml version="1.0" encoding="utf-8" ?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal" 
        android:orientation="vertical" >
    
        <Button 
            android:id="@+id/btn_pop" 
            android:text="弹出菜单"  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    
  3. res 目录下新建一个资源目录 menu,然后在 res/menu 目录下新建文件 menu_pop.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/saosao" android:title="扫一扫" />
        <item android:id="@+id/add" android:title="添加" />
    </menu>
    
  4. 直接修改 MainActivity.java

    package cn.twle.android.popupmenu;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import android.view.View;
    import android.view.MenuItem;
    
    import android.widget.PopupMenu;
    import android.widget.Toast;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final Button btn_pop = (Button)findViewById(R.id.btn_pop);
    
            btn_pop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    PopupMenu popup = new PopupMenu(MainActivity.this,btn_pop);
                    popup.getMenuInflater().inflate(R.menu.menu_pop, popup.getMenu());
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            String info = "";
                            switch (item.getItemId()){
                                case R.id.saosao:
                                    info = "你点了扫一扫";
                                    break;
                                case R.id.add:
                                    info = "你点了添加";
                                    break;
                            }
    
                            Toast.makeText(MainActivity.this,info,
                                    Toast.LENGTH_LONG).show();
    
                            return true;
                        }
                    });
                    popup.show();
                }
            });
        }
    }
    

参考文档

  1. Android menus

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.