Android menu菜单

之前学习了Android menu菜单,最近需要用到,忘了,所以再次记录一下。
Android menu菜单有三种:
1 选项菜单(OptionsMenu):当用户按手机上的菜单键时自动弹出的菜单
2.上下文菜单(contextMenu):长按某个控件超过2s后弹出的菜单
3.弹出菜单(PopMenu):当用户点击某个控件时弹出的菜单
这里只讲第一种。

首先

在res目录下新建一个menu文件夹,创建一个xml文件
在这里插入图片描述
编辑menu.xml文件(此文件可自定义名称,不用叫menu)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/id1"
    android:title="菜单3"
    android:orderInCategory="300"
    app:showAsAction="never"></item>
    <item android:id="@+id/id2"
        android:title="菜单5"
        android:orderInCategory="500"
        app:showAsAction="never"></item>
    <item android:id="@+id/id3"
        android:title="菜单1"
        app:showAsAction="always"></item>
    <item android:id="@+id/id4"
    android:title="菜单1"
    app:showAsAction="never"></item>
</menu>

讲一下各个属性

id:指定菜单项的唯一标识
title:菜单项上显示的文字,即菜单标题
orderInCategory:指定菜单在类别中的排序号,数字越大越靠近手机底部,不设置的话就按先后顺序显示。
showAsAction:指定菜单项的显示方式。有always、never等选择(其他的我我也没弄清楚,就不瞎说了)
						always显示在菜单外面,never显示在菜单里面。

在这里插入图片描述
菜单1我设置了always所以在外面,其他的在里面。
在这里插入图片描述
要实现这个效果要在你需要显示的activity中重写两个函数onCreateOptionsMenu和onOptionsItemSelected

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {   //加载menu布局
        MenuInflater inflater=getMenuInflater();
        inflater.inflate(R.menu.menu,menu);
        return true;   
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {   //给menu添加点击事件
        switch(){      
        //具体逻辑操作
        }
        return true;
    }

2.弹出菜单 PopupMenu

PopupMenu需要两个参数,第一个是context,第二个是PopupMenu所依赖的view,就是对应的控件

    @OnClick(R.id.top_right_view)
    public void onViewClicked() {
        PopupMenu popupMenu = new PopupMenu(SettingEqActivity.this, topRightIv);
        getMenuInflater().inflate(R.menu.eq_menu, popupMenu.getMenu());
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                switch (menuItem.getItemId()) {
                    case R.id.eq_menu_reset:
                        Toast.makeText(SettingEqActivity.this, "重置", Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.eq_menu_save:
                        Toast.makeText(SettingEqActivity.this, "保存", Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.eq_menu_loading_interface:
                        Toast.makeText(SettingEqActivity.this, "加载", Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.eq_menu_loading_firmware:
                        Toast.makeText(SettingEqActivity.this, "导入", Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.eq_menu_export_firmware:
                        Toast.makeText(SettingEqActivity.this, "导出", Toast.LENGTH_SHORT).show();
                        return true;
                    default:
                        return false;
                }
            }
        });
        popupMenu.show();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值