AndroidStudio中的菜单选项

# 安卓学习笔记

选项菜单:软件右上角菜单

上下文菜单:长按显示菜单

弹出式菜单:点击显示菜单

新建菜单选项

在res文件夹中新建menu文件夹,右击创建菜单文件

该文件可以创建item和grup组件

item可以创建title,icon和显示设置showAsAction常用的always永久显示和ifRoom显示,两以上建议设置为ifRoom

<?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/menu_setting"
        android:title="设置"
        android:icon="@drawable/baseline_settings_24"
        app:showAsAction="always"/>

    <item android:id="@+id/menu_hepp"
        android:title="关于"
        android:icon="@drawable/baseline_help_24"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/menu_hepp1"
        android:title="帮助"
        android:icon="@drawable/baseline_help_24"
        app:showAsAction="ifRoom"/>
    <item android:id="@+id/menu_hepp2"
        android:title="退出"
        android:icon="@drawable/baseline_help_24"
        app:showAsAction="ifRoom"/>

</menu>

选项菜单

需要实现两个方法

onCreateOptionsMenu(Menu menu) 用于绑定菜单文件
   @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.菜单文件);
        return true;
    }
onOptionsItemSelected(@NonNull MenuItem item),将指定的菜单项填充到 Menu对象中 

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId){
            case R.id.menu_hepp:
                Toast.makeText(this, "点击了帮助", Toast.LENGTH_SHORT).show();
                return true;

            case R.id.menu_setting:
                Toast.makeText(this, "点击了设置", Toast.LENGTH_SHORT).show();
                return true;
            case android.R.id.home:
                this.finish();//关闭当前页面
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }
 左上角退出显示设置
1,在onCreate中设置
 ActionBar actoionBar = getSupportActionBar();
 actoionBar.setTitle("选项菜单");
 actoionBar.setDisplayHomeAsUpEnabled(true);
   然后在点击时this.finish();

2.在manifest文件中添加 android:parentActivityName=".MainActivity"

    <activity
        android:name=".MainActivity3"
        android:exported="false"
        android:label="上下文菜单"
        android:parentActivityName=".MainActivity" >
    </activity>

实现效果

上下文菜单

重写两个方法

onCreateContextMenu绑定menu文件
onContextItemSelected显示菜单内容
 @Override
    public void onCreateContextMenu(
                        ContextMenu menu, 
                        View v, 
                        ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        MenuInflater menuInflater =getMenuInflater();
        menuInflater.inflate(R.menu.menu_context,menu);
    }

    @Override
    public boolean onContextItemSelected(@NonNull MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId){
            case R.id.menu_hepp:
                Toast.makeText(this, "点击了按钮0"+item.getTitle(),                         
                Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu_setting:
                Toast.makeText(this, "点击了按钮1"+item.getTitle(),     
                Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu_hepp1:
                Toast.makeText(this, "点击了按钮2"+item.getTitle(), 
                Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu_hepp2:
                Toast.makeText(this, "点击了按钮3"+item.getTitle(), 
                Toast.LENGTH_SHORT).show();
                return true;
            case android.R.id.home:
                this.finish();//关闭当前页面
            default:
                break;
        }

        return super.onContextItemSelected(item);
    }

实现效果

弹出菜单

选择一个点击事件,实现PopupMenu 类,绑定文件,选择对齐方式,貌似只有左右,执行show()f方法,实现setOnMenuItemClickListener()方法

 public void pop(View view) {
        PopupMenu popupMenu = new PopupMenu(this,view);
        popupMenu.inflate(R.menu.menu_pop);
        popupMenu.setGravity(Gravity.RIGHT);    
        popupMenu.show();
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                int itemId = item.getItemId();
                switch (itemId){
                    case R.id.menu_hepp:
                        //执行的代码
                        return true;

                    case R.id.menu_setting:
                        //执行的代码
                        return true;
                    case R.id.menu_hepp1:
                         //执行的代码
                        return true;
                    case R.id.menu_hepp2:
                         //执行的代码
                        return true;
                    default:
                        break;
                }
                return true;
            }
        });
    }

实现效果

与上下文菜单不同的是,上下午需要长按,弹出菜单点击即可

此外菜单还可以添加分组选项group

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值