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



Android的两种菜单,布布扣,bubuko.com

时间: 2024-12-24 19:28:42

Android的两种菜单的相关文章

android使用两种方式注册receiver

1. package com.example.myreceiver; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.View; public class MainActivity extends Activi

Android ListView两种长按弹出菜单方式

* 知识点1:ListView item:两种长按弹出菜单方式* 知识点2:ListView SimpleAdapter的使用*  知识点 3:在java代码中创建一个ListView*/ -----------------------------------------------------Activity[mw_shl_code=java,true]package org.gxl.com; public class ListOnLongClickActivity extends Activ

Android学习笔记(36):Android的两种事件处理方式

Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理. 我们来说的容易理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法.除了一些特定的情况,大部分情况使用基于回调的事件处理方式并不是最好的选择. (2)基于监听的事件处理就是在监听器中定义事件的处理方式,再为组件绑定监听器.这种方式无疑是更能够体现面向对象思想的. 基于回调的事件处理: View类包含如下的方法可以用于重写: boolean onKeyDown(int keyCode

Android中两种序列化方式的比较Serializable和Parcelable

Serializable和Parcelable接口可以完成对象的序列化过程,当我们需要通过Intent和Binder传输数据时就需要使用者两种序列化方式.还有,我们需要对象持久化到存储设备或者通过网络传输给其他客户端,这个使用也需要使用Serializale来完成对象的序列化.在Android应用开发中,这两种方式都很常见,但两者方式并不相同. 1.Serializable接口 Serializable接口是Java提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作.使用

Android APP 两种用程序拨号的方式

想在APP中添加一个拨号功能该怎样做呢?Android提供了两种方式,一种是ACTION_CALL方式直接拨打,另一种是ACTION_DIAL方式打开系统的拨号界面. 下面我们来做个小例子 首先需要在AndroidManifest.xml中添加一个使用权限,这个容易忘哈哈. <uses-permission android:name="android.permission.CALL_PHONE" /> 然后搭一个简单的界面测试一下,下面是布局文件代码 <?xml ve

Android -- service两种启动方式startService与bindService

继上一篇文章,Android – Service的使用,我们来继续看看Service的两种启动方式 第一种startService . 运行代码,得知以下几点结论: 我们了解它的启动周期为onCreate->onStartCommand,如图 当退出应用后,后台的Service进程仍然存在,未被销毁 当点击多次startService时,如图我点击了3次,你会发现onCreate方法只创建了一次. stopService,如图 第二种bindService 运行代码得知以下结论: 点击bindS

关于android中两种service的编写简单总结

1.startservice (两种方法,继承service类或者继承intentservice 类) 继承service类,在onstartcommend重载方法中实现业务逻辑的处理,如果耗时过长最好新开一个线程,因为默认是在程序的主线程中,会造成阻塞等问题. 在有多个请求的时候,为了防止在第一个请求结束服务的时候第二个请求刚好传入,但因为服务被结束而失败,可以使用startid 配合 stopself(startid)进行判断,如果stopself(startid)中的ID与现有onstar

Android笔记--两种双击退出程序的方法

首先通过onKeyDown获取当前是否是BACK键.如果是进行下一步. 两种方法其中一种是通过对连续点击back键之间的时间进行判断是否是要退出,另一种是设置一个状态值,通过改变状态值来判断是否是要退出. 1. 1 private long exitTime=0;//根据连续点击之间时间判断 是否退出 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanc

Android网络通信两种方法

android的网络编程分为2种:基于socket的,和基于http协议的. Http通信 以xml或者json为载体,相互通信数据. JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. Socket通信 Socket与Http不同的是两个的协议不同,socket是面向TCP/UDP协议的,http通信时面