玩转Android---UI篇---Menu(菜单)

来源:互联网 发布:smtp协议端口 编辑:程序博客网 时间:2024/06/05 18:03

原址:http://hualang.iteye.com/category/143855

Android系统里面有3种类型的菜单:options menu,context menu,sub menu。 

options menu  : 按Menu键就会在屏幕下面显示,一个弹出的菜单。 
    它包括两种菜单项: 
         因为options menu在屏幕底部最多只能显示6个菜单项,这些菜单项称为icon menu,icon menu只支持文字(title) 以及icon,可以设置快捷键,不支持checkbox以及radio控件,所以不能设置checkable选项。 
         而多于6的菜单项会以“more” icon menu来调出,称为expanded menu。它不支持icon,其他的特性都和icon menu一样! 

在Activity里面,用options menu的使用方法如下: 

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, 1, 1, R.string.exit);

menu.add(0, 2, 2, R.string.about);

return super.onCreateOptionsMenu(menu);

}

      创建options menu,这个函数只会在menu第一次显示时调用。 

 

public boolean onOptionsItemSelected(MenuItem item) {

if(item.getItemId()==1)

{

finish();

}else if(item.getItemId()==2)

{

Toast toast=Toast.makeText(this, "这是个Menu菜单的练习", Toast.LENGTH_SHORT);

toast.show();

}

return super.onOptionsItemSelected(item);

} 
     onOptionsItemSelected (MenuItem item) 处理选中的菜单项。

 

实例如下:

MenuTest.java

Java代码  收藏代码
  1. package org.hualang.menu;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Menu;  
  6. import android.view.MenuItem;  
  7. import android.widget.Toast;  
  8.   
  9. public class MenuTest extends Activity {  
  10.     /** Called when the activity is first created. */  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.           
  16.     }  
  17.   
  18.     @Override  
  19.     public boolean onCreateOptionsMenu(Menu menu) {  
  20.         // TODO Auto-generated method stub  
  21.         menu.add(011, R.string.exit);  
  22.         menu.add(022, R.string.about);  
  23.         return super.onCreateOptionsMenu(menu);  
  24.     }  
  25.   
  26.     @Override  
  27.     public boolean onOptionsItemSelected(MenuItem item) {  
  28.         // TODO Auto-generated method stub  
  29.         if(item.getItemId()==1)  
  30.         {  
  31.             finish();  
  32.         }else if(item.getItemId()==2)  
  33.         {  
  34.             Toast toast=Toast.makeText(this"这是个Menu菜单的练习", Toast.LENGTH_SHORT);  
  35.             toast.show();  
  36.         }  
  37.         return super.onOptionsItemSelected(item);  
  38.     }  
  39.       
  40. }  

 String.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, MenuTest!</string>  
  4.     <string name="app_name">MenuTest</string>  
  5.     <string name="exit">退出</string>  
  6.     <string name="about">关于</string>  
  7. </resources>  

 main.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="Menu菜单实例"  
  11.     />  
  12. </LinearLayout>  

 运行结果如下:点击Menu按钮



 当点击退出时候,就会退出程序,当点击关于的时候会弹出一个Toast


 

sub menu 
    上面的menu都可以加入子菜单,但子菜单不能嵌套子菜单,这意味着在Android系统,菜单只有两层,设计时需要注意的!同时子菜单不支持icon。 所以这个时候可以在option menu中加入可以嵌套的菜单 sub menu

只需要在刚才的代码中的onCreateOptionMenu中加入

Java代码  收藏代码
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         // TODO Auto-generated method stub  
  4.         menu.add(011, R.string.exit);  
  5.         menu.add(022, R.string.about);  
  6.         SubMenu subMenu = menu.addSubMenu(1100100"游戏");  
  7.         subMenu.add(233"铁拳");          
  8.         subMenu.add(244"流行蝴蝶剑");  
  9.         return super.onCreateOptionsMenu(menu);  
  10.     }  

 再次运行后,点击MENU按钮,会弹出3个选项



 当点击“游戏”选项的时候,就会弹出如下效果



0 0