• Android的两种菜单


    Android子菜单和选项菜单与上下文菜单的实现


    菜单在Android开发中必不可少,可是要怎么实现各种菜单呢?是不是很头疼呢?下面我就来介绍一下:

    1. 选项菜单和子菜单的实现

    选项菜单:最常规的菜单,Android中把它叫做option menu。选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项都作为“更多”菜单的子菜单项。

    子菜单:Android中点击了子菜单将弹出悬浮窗口显示子菜单项。子菜单不支持嵌套,即子菜单中不能再包括其他子菜单。                    

    步骤1:生成子菜单和选项菜单。创建一个名为“myMenu”的Android Project。在MyMenuActivity类中,右单击Source→Override/Implement Methods。通过onCreateOptionsMenu()方法来生成选项菜单,代码如下:

        public boolean onCreateOptionsMenu(Menu menu) {   //生成选项菜单
            // TODO Auto-generated method stub
            super.onCreateOptionsMenu(menu);    // 调用父类方法来加入系统菜单
            menu.add(1,1,1,"分享");     
            menu.add(1,2,2,"剪切");             //添加菜单项
            menu.add(1,3,3,"删除");
            menu.add(1,4,4,"编辑");
            menu.add(1,5,5,"旋转");
            menu.add(1,6,6,"标注");
            menu.add(1,7,7,"详细信息");       //menu.add(int groupId, int itemId, int order, CharSequence title);
            menu.add(1,8,8,"设为壁纸");
            SubMenu submenu=menu.addSubMenu("系统设置");//可以带子菜单的菜单项
            submenu.add(1,1,1,"显示设置");
            submenu.add(1,2,2,"高级设置");
            submenu.add(1,3,3,"网络设置");
            submenu.add(1,4,4,"安全设置");
            return true;
        }

    步骤2:响应菜单。onOptionsItemSelected(MenuItem),每当有菜单项被点击时,android就会调用该方法,并传入被点击菜单项。

    public boolean onOptionsItemSelected(MenuItem item) {   //响应菜单
            // TODO Auto-generated method stub
            b1.setText(item.getTitle());   //点击了哪个菜单项,b1就显示哪个菜单项的title,
            return true;
        }

    2. 上下文菜单的实现

    上下文菜单:Android中长按视图控件后出现的菜单,windows点击右键弹出的菜单即上下文菜单。

    步骤1:注册上下文菜单

    public class MyMenuActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            b1=(Button) findViewById(R.id.b1);   //注册按钮b1
            this.registerForContextMenu(b1);   //注册上下文菜单
        }
        Button b1;

    步骤2:生成上下文菜单

    public void onCreateContextMenu(ContextMenu menu, View v,    //生成上下文菜单
                ContextMenuInfo menuInfo) {
            // TODO Auto-generated method stub
            if(v.getId()==R.id.b1)
            {
                menu.clear();     //清空上下文菜单(一些默认的菜单项)
                menu.setHeaderTitle("文件操作");   //上下文菜单的标题
                menu.add(0, 1, Menu.NONE, "发送");     //添加上下文菜单项
                menu.add(0, 2, Menu.NONE, "标记为重要");
                menu.add(0, 3, Menu.NONE, "重命名");
                menu.add(0, 4, Menu.NONE, "删除");
            }
        }

    步骤2:响应上下文菜单

        public boolean onContextItemSelected(MenuItem item) {  //响应上下文菜单
            // TODO Auto-generated method stub
            t1.setText(item.getTitle());
            return true;
        }

    感悟

    在没有写之前感觉满肚了想写了,思路很清晰。可到了写的时候,思路变得混乱了(也许是我没有集中精力吧)。不过还是完成了,有写的不对的地方亲们一定要指出来喔!

    http://blog.csdn.net/dyllove98/article/details/8841769


  • 相关阅读:
    [leetcode]Largest Number
    [leetcode]Second Highest Salary
    [leetcode]Combine Two Tables
    [leetode]Binary Search Tree Iterator
    [leetcode]Excel Sheet Column Number
    [leetcode]Two Sum III
    [leetcode]Majority Element
    Mysql5.7.26解压版(免安装版)简单快速配置步骤,5分钟搞定(win10-64位系统)
    APP移动端自动化测试工具选型“兵器谱”一览(主流开源工具)
    Jmeter+jenkins如何快速搭建接口和性能测试持续集成解决方案-[基于windows篇]
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3873700.html
Copyright © 2020-2023  润新知