博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android -- Options Menu,Context Menu,Popup Menu
阅读量:7001 次
发布时间:2019-06-27

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

Options Menu                                                                          

创建选项菜单的步骤:

1、覆盖Activity 的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用

2、调用Menu 的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem 的setIcon( )方法来为菜单项设置图标

3、当菜单项(MenuItem)被选择时,覆盖Activity 的onOptionsItemSelected(MenuItem item)来响应事件

public class MainActivity extends Activity {    // 定义一些变量,后面直接拿来用    private static final int START_ITEM = Menu.FIRST;    private static final int OVER_ITEM = Menu.FIRST + 1;    private static final int SET_ITEM1 = Menu.FIRST + 2;    private static final int SET_ITEM2 = Menu.FIRST + 3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // 添加菜单项(组ID,菜单项ID,排序,标题)        menu.add(0, START_ITEM, 100, "开始");        menu.add(0, OVER_ITEM, 200, "结束");        // 添加子菜单        SubMenu sub1 = menu.addSubMenu("设置");        sub1.add(1, SET_ITEM1, 300, "设置声音");        sub1.add(1, SET_ITEM2, 400, "设置桌面");        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {        case START_ITEM:            // 提示信息            Toast.makeText(this, "开始", Toast.LENGTH_SHORT).show();            break;        case OVER_ITEM:            // 提示信息            Toast.makeText(this, "结束", Toast.LENGTH_SHORT).show();            break;        case SET_ITEM1:            // 提示信息            Toast.makeText(this, "声音设置", Toast.LENGTH_SHORT).show();            break;        case SET_ITEM2:            // 提示信息            Toast.makeText(this, "设置桌面", Toast.LENGTH_SHORT).show();            break;        default:            break;        }        return super.onOptionsItemSelected(item);    }}

Context Menu                                                                        

顾名思义,与上下文(环境)有关。思想类似于Windows中的右键单击弹出的快捷菜单。操作时需要长时间按住某个东东不放。

创建上下文菜单的步骤:

1、覆盖Activity 的onCreateContextMenu(Menu menu)方法,调用Menu的add()方法添加菜单项(MenuItem)。

2、覆盖Activity 的onContextItemSelected(MenuItem iitem)来响应事件。

3、调用registerForContextMenu( )方法来为视图注册上下文菜单。

public class MainActivity2 extends Activity {    private Button btn1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main2);        // 获取BUTTON对象        btn1 = (Button) findViewById(R.id.button1);        //在button上注册上下文菜单        registerForContextMenu(btn1);    }    // 创建上下文菜单的事件方法    @Override    public void onCreateContextMenu(ContextMenu menu, View v,            ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        getMenuInflater().inflate(R.menu.menu_main2, menu);    }    // 上下文菜单项触发事件    @Override    public boolean onContextItemSelected(MenuItem item) {        switch (item.getItemId()) {        case R.id.start:            Toast.makeText(this, "开始。。。", Toast.LENGTH_SHORT).show();            break;        case R.id.over:            Toast.makeText(this, "结束。。。", Toast.LENGTH_SHORT).show();            break;        default:            break;        }        return super.onContextItemSelected(item);    }}

Popup Menu                                                                             

弹出式菜单.

弹出菜单是停靠在一个View上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。这是非常有用的。

public class MainActivity3 extends Activity  implements OnMenuItemClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main3);    }    public void showPopupMenu(View v){        //创建弹出式菜单对象(最低版本11)        PopupMenu popup = new PopupMenu(this,v);        //获取菜单填充器        MenuInflater inflater = popup.getMenuInflater();        //填充菜单        inflater.inflate(R.menu.menu_main3, popup.getMenu());        //设置菜单项的单击事件        popup.setOnMenuItemClickListener(this);        popup.show();    }    //弹出式菜单的单击事件处理    @Override    public boolean onMenuItemClick(MenuItem item) {        switch (item.getItemId()) {        case R.id.copy:            Toast.makeText(this, "复制。。。", Toast.LENGTH_LONG).show();            break;        case R.id.del:            Toast.makeText(this, "删除。。。", Toast.LENGTH_LONG).show();            break;        default:            break;        }        return false;    }}

我是天王盖地虎的分割线                                                               

源代码:

menu学习.zip

 

 

 

转载请注明出处:

你可能感兴趣的文章
Git使用笔记
查看>>
初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息
查看>>
XXL-CRAWLER v1.1.0 发布了
查看>>
Spring Boot 中使用 Java API 调用 Elasticsearch
查看>>
HTTP/3 来啦,你还在等什么?赶紧了解一下
查看>>
一个合格的Webpack4配置工程师素养:第二部分
查看>>
利用 EasyWeChat 和 ChatterBot 简单搭建一个公众号「自动回复机器人」
查看>>
关于RxJava在业务上的一些思考
查看>>
MySQL8.0 新特性:Partial Update of LOB Column
查看>>
HTTP的历史
查看>>
对称加密、非对称加密、RSA(总结)
查看>>
Java高阶编程——RxBus 开源,基于 RxJava 的 event bus
查看>>
阿里云安全管家使用教程
查看>>
学习jQueryUI
查看>>
设计模式入门
查看>>
【函数式 Swift】可选值
查看>>
对使用Redux和Redux-saga管理状态的思考
查看>>
vscode中执行gulp的task
查看>>
intelli idea mac 的安装与配置
查看>>
说说如何使用 Tomcat 搭建文件服务器
查看>>