Chinaunix首页 | 论坛 | 博客
  • 博客访问: 390636
  • 博文数量: 214
  • 博客积分: 770
  • 博客等级: 军士长
  • 技术积分: 1969
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-08 01:22
文章分类

全部博文(214)

文章存档

2013年(110)

2012年(104)

我的朋友

分类: Android平台

2013-07-16 10:44:03

Android 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,最常见的是用于列表视图ListView的item。

注意:Android 的上下文菜单不支持图标或快捷键。

创建一个上下文菜单的步骤:

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

2. 覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。

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

a 首先main.xml中添加一个ListView控件
b 添加一个list_item.xml文件内容为

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TextView xmlns:android=""
  3.     android:id="@+id/myTextView"
  4.     android:textSize="20sp"
  5.     android:layout_width="wrap_content"
  6.     android:layout_height="wrap_content"
  7.  
  8.     />
c 定义变量
    private ListView listview;    
    private static final int ITEM1 = Menu.FIRST;
    private static final int ITEM2 = Menu.FIRST+1;
    private static final int ITEM3 = Menu.FIRST+2;
d 在onCreate中添加代码

点击(此处)折叠或打开

  1. listview =(ListView)findViewById(R.id.list);
  2.         String[] mString = new String[]{
  3.      "张三",
  4.      "王五",
  5.      "马六",
  6.      };
  7.      ArrayAdapter<String> mla = new ArrayAdapter<String>(this, R.layout.list_item_1, mString);
  8.      listview.setAdapter(mla);
  9.      this.registerForContextMenu(listview)
e 添加事件处理

点击(此处)折叠或打开

  1. //上下文菜单,本例会通过长按条目激活上下文菜单
  2.     @Override
  3.     public void onCreateContextMenu(ContextMenu menu, View view,
  4.             ContextMenuInfo menuInfo) {
  5.         menu.setHeaderTitle("简介");
  6.         //添加菜单项
  7.         menu.add(0, ITEM1, 0, "name");
  8.         menu.add(0, ITEM2, 0, "age");
  9.         menu.add(0, ITEM3, 0, "sex");
  10.     }
  11.     
  12.     //菜单单击响应
  13.     @Override
  14.     public boolean onContextItemSelected(MenuItem item){
  15.         //获取当前被选择的菜单项的信息
  16.         //AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
  17.         switch(item.getItemId()){
  18.         case ITEM1:
  19.             //在这里添加处理代码
  20.             
  21.             break;
  22.         case ITEM2:
  23.             //在这里添加处理代码
  24.             
  25.             break;
  26.         case ITEM3:
  27.             //在这里添加处理代码
  28.             
  29.             break;
  30.         }
  31.         return true;
  32.     }


阅读(407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~