博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记--Menu菜单的使用
阅读量:4678 次
发布时间:2019-06-09

本文共 4059 字,大约阅读时间需要 13 分钟。

实现选项菜单、上下文菜单,以及菜单内部的子菜单。

视图效果:

MainActivity 选项菜单 选项菜单的子菜单 上下文菜单(按住按钮或者EditText弹出)

 

注意:上下文菜单如何弹出?在注册该菜单的视图上按住一段时间后就会弹出菜单。

MainActivity.java

package com.evor.test;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.Menu;import android.view.MenuItem;import android.view.MenuItem.OnMenuItemClickListener;import android.view.SubMenu;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                Button btn1 = (Button)findViewById(R.id.btn1);        EditText edt1 = (EditText)findViewById(R.id.edt1);        //注册上下文菜单(按住该视图一段时间后就会出现menu)        registerForContextMenu(btn1);        registerForContextMenu(edt1);    }        //实现选项菜单    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //参数: groupid,itemid,order,titleRes        MenuItem item1 = menu.add(1,1,1,"菜单项1");        MenuItem item2 = menu.add(1,2,2,"菜单项2");        MenuItem item3 = menu.add(1,3,3,"菜单项3");        item3.setIntent(new Intent(this,MainActivity.class)); //设定关联的Activity,点击后会转到该activity                MyOnMenuItemClickListener menuItemClickListener = new MyOnMenuItemClickListener();        item1.setOnMenuItemClickListener(menuItemClickListener);        item2.setOnMenuItemClickListener(menuItemClickListener);        item3.setOnMenuItemClickListener(menuItemClickListener);                //添加子菜单        SubMenu fileSubMenu = menu.addSubMenu(1,4,4,"文件");        MenuItem submenuItem1 = fileSubMenu.add(1,5,2,"新建");        MenuItem submenuItem2 = fileSubMenu.add(2,6,3,"打开");        MenuItem submenuItem3 = fileSubMenu.add(2,7,4,"退出");        submenuItem1.setCheckable(true); //设置为多选框                submenuItem2.setChecked(false); //设置是否被勾选        submenuItem3.setChecked(true);    //设置是否被勾选        fileSubMenu.setGroupCheckable(2, true, true);     //第三参数确定为单选还是多选        return true;    }        //内部类--选项菜单的菜单项响应类    private class MyOnMenuItemClickListener implements OnMenuItemClickListener{        @Override        public boolean onMenuItemClick(MenuItem item) {                            switch(item.getItemId()){            case 1 : {Toast.makeText(MainActivity.this, "点击了菜单项1", Toast.LENGTH_SHORT).show(); break;}            case 2 : {Toast.makeText(MainActivity.this, "点击了菜单项2", Toast.LENGTH_SHORT).show(); break;}            case 3 : {Toast.makeText(MainActivity.this, "点击了菜单项3", Toast.LENGTH_SHORT).show(); break;}            }                        return true;        }            }         //上下文菜单的回调函数    @Override    public void onCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInfo){        super.onCreateContextMenu(menu, view, menuInfo);        menu.setHeaderTitle("上下文菜单");        int itemid = 0;        menu.add(0,itemid++, Menu.NONE, "菜单项1");        menu.add(0,itemid++, Menu.NONE, "菜单项2");        menu.add(0,itemid++, Menu.NONE, "菜单项3");                SubMenu subMenu = menu.addSubMenu("子菜单");        subMenu.add("选项1");        subMenu.add("选项2");    }        //菜单事件    @Override    public boolean onPrepareOptionsMenu(Menu menu){        //在显示选项菜单之前被调用,一般可用来修改即将显示的选项菜单        super.onPrepareOptionsMenu(menu);        return true;    }        @Override    public void onOptionsMenuClosed(Menu menu){        //在关闭选项菜单时被调用        super.onOptionsMenuClosed(menu);    }        @Override                    public void onContextMenuClosed(Menu menu) {        // 在关闭上下文菜单时调用        super.onContextMenuClosed(menu);    }        @Override    public boolean onMenuOpened(int featureId, Menu menu) {        //在显示选项菜单之前调用,该方法在onPrepareOptionsMenu方法之后调用        return super.onMenuOpened(featureId, menu);    }}

activity_main.xml

 

转载于:https://www.cnblogs.com/gnivor/p/4941930.html

你可能感兴趣的文章
EntityFramework 7 Left Join Where Select 奇怪问题
查看>>
关于static静态块的使用和static list的使用
查看>>
spring读取配置文件的几种方式
查看>>
从P1到P7——我在淘宝这7年(转)
查看>>
CRM 2011 Distribute Workflow Activity (MSCRM 2011 分派工作流活动)
查看>>
Qt for Android(转)
查看>>
C++大作业之链表实现的高精度加法,减法,和数组实现的高精度乘法。
查看>>
关于招聘的最新信息
查看>>
Python_列表,元组和字典的异同
查看>>
第十六讲:适配器模式
查看>>
java之网络爬虫介绍(非原创)
查看>>
hive-jdbc获取查询日志慢的问题发现与解决
查看>>
真正的语言能用一句代码输出三角形
查看>>
电子时钟,骷髅时钟
查看>>
优化页面加载速度
查看>>
【机器学习详解】SMO算法剖析(转载)
查看>>
windows8.1 装ubuntu16.04双系统 的记录
查看>>
C#图解教程 第十二章 数组
查看>>
linux常用命令2
查看>>
laravel 关联模型
查看>>