0
点赞
收藏
分享

微信扫一扫

Android_ 弹出菜单创建

dsysama 2022-04-16 阅读 113
android

弹出菜单

​ 弹出菜单被固定在调用菜单的视图元素上,并且在一个垂直列表中显示菜单项目

  • 弹出菜单是在API级别11和更高版本上才有效。
  • 弹出菜单是一个视图元素上弹出的模式菜单
  • 如果这个视图元素下方有空间,那么弹出菜单将显示在视图元素的下方,否则会显示在上方。

弹出菜单设计步骤

  1. 编写Menu配置文件

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.example.popupmenudemo.MainActivity">
        <item
            android:id="@+id/copy"
            android:orderInCategory="100"
            android:title="@string/copy"
           />
        <item
            android:id="@+id/past"
            android:orderInCategory="100"
            android:title="@string/past"
            />
    </menu>
    
  2. 加载PopupMenu

  • 通过PopupMenu的构造函数实例化一个PopupMenu对象,传递一个当前上下文对象以及绑定的View控件

    /*构建弹出菜单对象,第二个参数表明绑定那个view*/
    PopupMenu pm = new PopupMenu(MainActivity.this,view);
    
  • 使用menulnflater.infllate()方法加载配置文件到PopupMenu.getMenu()

     /*表明要填充的内容菜单*/
    pm.inflate(R.menu.menu_main);
    
  • 在需要的时候调用PopupMenu.shou()方法

     /*弹出菜单显示出来*/
    pm.show();
    
  1. 调用PopupMenu.setOnMenultemClickListener()设置一个PopupMenu选项的选中事件
 pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {
                        switch (menuItem.getItemId()){
                            case R.id.copy:
                                Toast.makeText(MainActivity.this,"copy",Toast.LENGTH_LONG).show();
                                break;
                            case R.id.past:
                                Toast.makeText(MainActivity.this,"past",Toast.LENGTH_LONG).show();
                                break;
                        }
                        return false;
                    }
                });

整个java文件实现源码

public class MainActivity extends AppCompatActivity{

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        button = findViewById(R.id.mybtn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*构建弹出菜单对象,第二个参数表明绑定那个view*/
                PopupMenu pm = new PopupMenu(MainActivity.this,view);
                /*表明要填充的内容菜单*/
                pm.inflate(R.menu.menu_main);
                /*绑定菜单项的点击事件处理*/
                pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {
                        switch (menuItem.getItemId()){
                            case R.id.copy:
                                Toast.makeText(MainActivity.this,"copy",Toast.LENGTH_LONG).show();
                                break;
                            case R.id.past:
                                Toast.makeText(MainActivity.this,"past",Toast.LENGTH_LONG).show();
                                break;
                        }
                        return false;
                    }
                });
                /*弹出菜单显示出来*/
                pm.show();
            }
        });
    }

}
举报

相关推荐

0 条评论