android ContextMenu

ContextMenu 继承自 Menu。上下文菜单不同于选项菜单,选项菜单服务于Activity,而上下文菜单是注册到某个View对象上的。如果一个View对象注册了上下文菜单,用户可以通过长按(约2秒) 该View对象上以呼出上下文菜单。 
    上下文菜单不支持快捷键(shortcut),其菜单选项也不能附带图标,但是可以为上下文菜单的标题指定图标 
  下面是一个ContextMenu的小例子,运行效果如下: 

 

 

Activity类 
Java代码   收藏代码
  1. package xiaohang.zhimeng;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.ContextMenu;  
  6. import android.view.MenuItem;  
  7. import android.view.View;  
  8. import android.view.ContextMenu.ContextMenuInfo;  
  9. import android.widget.EditText;  
  10.   
  11. public class Activity01 extends Activity {  
  12.     final int MENU1 = 1;  
  13.     final int MENU2 = 2;  
  14.     final int MENU3 = 3;  
  15.     final int MENU4 = 4;  
  16.     final int MENU5 = 5;  
  17.       
  18.       
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.main);  
  23.           
  24.         //为两个文本框注册上下文菜单  
  25.         this.registerForContextMenu(findViewById(R.id.EditText01));  
  26.         this.registerForContextMenu(findViewById(R.id.EditText02));  
  27.     }  
  28.       
  29.     //添加上下文菜单  
  30.     @Override  
  31.     public void onCreateContextMenu(ContextMenu menu, View v,  
  32.             ContextMenuInfo menuInfo) {  
  33.         //此方法在每次调用上下文菜单时都会被调用一次  
  34.         menu.setHeaderIcon(R.drawable.car);  
  35.         if (v==findViewById(R.id.EditText01)) {  
  36.             menu.add(0, MENU1, 0, R.string.mi1);  
  37.             menu.add(0, MENU2, 0, R.string.mi2);  
  38.             menu.add(0, MENU3, 0, R.string.mi3);  
  39.         }  
  40.         else if (v==findViewById(R.id.EditText02)) {  
  41.             menu.add(0, MENU4, 0, R.string.mi4);  
  42.             menu.add(0, MENU5, 0, R.string.mi5);  
  43.         }  
  44.     }  
  45.       
  46.     //响应上下文菜单  
  47.     @Override  
  48.     public boolean onContextItemSelected(MenuItem item) {  
  49.         switch (item.getItemId()) {  
  50.         case MENU1:  
  51.         case MENU2:  
  52.         case MENU3:  
  53.             EditText et1 = (EditText)this.findViewById(R.id.EditText01);  
  54.             et1.append("\n" + item.getTitle() + "被按下");  
  55.             break;  
  56.         case MENU4:  
  57.         case MENU5:  
  58.             EditText et2 = (EditText)this.findViewById(R.id.EditText02);  
  59.             et2.append("\n" + item.getTitle() + "被按下");  
  60.             break;  
  61.         }  
  62.         return true;  
  63.     }  
  64. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android ContextMenuAndroid系统提供的一种菜单风格,其主要作用是为用户提供与所选项相关的操作,例如复制、黏贴、编辑等。开发人员可以使用系统默认的ContextMenu或自定义ContextMenu。 系统默认的ContextMenu是由系统提供的,其中包含了很多默认的MenuItem,如复制、黏贴、编辑等,同时开发者可以添加自己的MenuItem。系统默认的ContextMenu通常是通过在View上长按触发的。 与其他View一样,ContextMenu也是由Android的View类派生出来的。具体地,它是通过在View类中重写onCreateContextMenu()方法来实现的。在此方法中,开发者可以设置ContextMenuMenuItem,添加各项操作。当用户长按View时,系统会调用此方法,以显示ContextMenu。 除了系统默认的ContextMenu,开发者还可以创建自定义的ContextMenu,并在需要时使用它。创建自定义ContextMenu的过程与创建一般的Menu类似。开发者可以在ContextMenu上添加自定义的MenuItem,还可以添加回调函数以响应用户的操作。创建自定义的ContextMenu后,将其与所需的View关联即可,与系统默认的ContextMenu相同。 总之,Android ContextMenu是一种很实用的界面元素,它可以为用户提供丰富的操作,使用户体验更加优秀。开发者可以使用系统默认的ContextMenu或自定义ContextMenu来满足业务需求。本文简单介绍了ContextMenu的原理与创建方法,但具体实现还要参考相关的API类库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值