菜单

来源:互联网 发布:那年呐服饰淘宝代理可信吗 编辑:程序博客网 时间:2024/04/30 09:34

Android平台提供了3中菜单的实现方式,即

1、选项菜单(OptionMenu),

2、上下文菜单(ContextMenu),

3、子菜单(SubMenu). 

1.OptionsMenu (选项菜单)
 
使用方法:
方法一:
1、添加菜单项:  重写onCreateOptionsMenu(Menu menu) ,在其中添加菜单  menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)
    关于参数:

    1、组别(groupId),如果不分组的话就写Menu.NONE或者0, 

      2、itemId,这个很重要,Android根据这个Id来确定不同的菜单 

      3、顺序(order),哪个菜单项在前面由这个参数的大小决定 

      4、文本(charsequence ),菜单项的显示文本

  1. @Override  
  2. public boolean onCreateOptionsMenu(Menu menu) {  
  3.     menu.add(0, MENU_ITEM_COUNTER, 0"开始");  
  4.     menu.add(0, MENU_ITEM_COUNTER + 10"暂停");  
  5.     menu.add(0, MENU_ITEM_COUNTER + 20"结束");  
  6.   
  7.     return super.onCreateOptionsMenu(menu);  
  8. }  

2、添加选择菜单项事件:在onOptionsItemSelected(MenuItem item)中 switch(item.getItemId()),然后添加对应选择事件
  1. @Override  
  2. public boolean onOptionsItemSelected(MenuItem item) {  
  3.     switch (item.getItemId()) {  
  4.     case MENU_ITEM_COUNTER:  
  5.         myTextView.setText("You click " + item.getTitle().toString()  
  6.                 + "Menu");  
  7.         break;  
  8.     case MENU_ITEM_COUNTER + 1:  
  9.         myTextView.setText("You click " + item.getTitle().toString()  
  10.                 + "Menu");  
  11.         break;  
  12.     case MENU_ITEM_COUNTER + 2:  
  13.         myTextView.setText("You click " + item.getTitle().toString()  
  14.                 + "Menu");  
  15.         break;  
  16.     default:  
  17.         break;  
  18.     }  
  19.     return super.onOptionsItemSelected(item);  
  20. }  

3(可选)、添加关闭菜单事件:onOptionsMenuClosed(Menu menu),在其中添加代码即可
4(可选)、添加准备菜单(菜单显示之前的事件),在其中添加代码即可

方法二:
1、添加菜单的样式:在res中创建menu目录,建立xml,

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/yang"        android:icon="@drawable/ic_launcher"        android:title="yang"/>    <item        android:id="@+id/xiao"        android:icon="@drawable/ic_launcher"        android:title="xiao"/>    <item        android:id="@+id/ru"        android:icon="@drawable/ic_launcher"        android:title="ru"/>    <item        android:id="@+id/de"        android:icon="@drawable/ic_launcher"        android:title="de"/></menu></span>

2、显示
重写onCreateOptionsMenu(Menu menu) ,getMenuInflater().inflate(R.menu.options_menu,menu):
a.inflate的作用是将xml定义的而一个布局找出来,但仅仅是找出来。
b.第一个参数是布局,第二个参数是菜单。
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.my_menu, menu);return true;}

剩下的同上
 
2.contextMenu上下文菜单
概述:继承自Menu。与选项菜单不同的是:选项菜单服务于Activity,而上下文菜单是注册到某个View对象上的 ,长按View才可以显示出来。而且使用上下文菜单需要注册,否则无法显示。最后上下文菜单无法添加图标和快捷键。
  1. @Override  
  2.     public void onCreateContextMenu(ContextMenu menu, View v,  
  3.             ContextMenuInfo menuInfo) {  
  4.           
  5.         //设置面积大一点,好点唉  
  6.         myTextView.setText("*******************************\n" + "要大一些看得才清楚的"  
  7.                 + "*******************************\n");  
  8.           
  9.         //itemId注意不要重复  
  10.         menu.add(0, 1, 0"1白色");  
  11.         menu.add(0, 2, 0"2红色");  
  12.         menu.add(0, 3, 0"3蓝色");  
  13.   
  14.         super.onCreateContextMenu(menu, v, menuInfo);  
  15.     }  
  1. @Override  
  2. public boolean onContextItemSelected(MenuItem item) {  
  3.       
  4.     //根据选择不同,对Text进行不同背景色的显示  
  5.     switch (item.getItemId()) {  
  6.     case 1:  
  7.         myTextView.setBackgroundColor(Color.WHITE);  
  8.         break;  
  9.     case 2:  
  10.         myTextView.setBackgroundColor(Color.RED);  
  11.         break;  
  12.     case 3:  
  13.         myTextView.setBackgroundColor(Color.BLUE);  
  14.         break;  
  15.     default:  
  16.         break;  
  17.     }  
  18.       
  19.     return super.onContextItemSelected(item);  
  20. }  

最后注册一下
Java代码  收藏代码
  1. //要记得在需要的控件上注册上下文菜单  
  2.     registerForContextMenu(myTextView);  
*当然了,也可以使用XML定义菜单样式,和上面的一样的
3.subMenu子菜单
使用顺序:
1、 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
2、 调用SubMenu的add()方法,添加子菜单
3. 用SubMenu.setHeaderIcon(),和SubMenu.setHeadTitle()设置标题 和标题图片。
3、 覆盖onContextItemSelected()方法,响应子菜单的单击事件
 

//响应点击事件:



0 0