安卓开发_浅谈OptionsMenus(选项菜单)

Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。

当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的。

 

这里就先学习 选项菜单OptionsMenus

创建选项菜单有两种方式

一、xml文件静态创建

 7 package information;  8 

 9 import com.example.allcode.R; 10 

11 import android.app.Activity; 12 import android.content.Intent; 13 import android.os.Bundle; 14 import android.view.Menu; 15 import android.view.MenuItem; 16 import android.widget.Toast; 17 

18 public class OptionMenus_text extends Activity{ 19  @Override 20     protected void onCreate(Bundle savedInstanceState) { 21         // TODO Auto-generated method stub

22  super.onCreate(savedInstanceState); 23  setContentView(R.layout.optionmenus); 24         

25  } 26 

27     

28  @Override 29     public boolean onCreateOptionsMenu(Menu menu) { 30         // TODO Auto-generated method stub 31         //一、xml的形式静态添加菜单项 

32  getMenuInflater().inflate(R.menu.main,menu); 33         

34         return true; 35         

36  } 37     

38     //点击事件

39     

40  @Override 41     public boolean onOptionsItemSelected(MenuItem item) { 42         // TODO Auto-generated method stub 43         //根据菜单项id执行响应事件

44         switch (item.getItemId()) { 45         //静态菜单 判断Id 

46          case R.id.action_menu_1: 47              Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show(); 48              break; 49          case R.id.action_menu_2: 50              Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show(); 51 

52     

53 

54         default: 55             break; 56  } 57         

58         return super.onOptionsItemSelected(item); 59     

60  } 61 }
32         getMenuInflater().inflate(R.menu.main,menu);
看这一行代码,

我们找到其对应的文件

安卓开发_浅谈OptionsMenus(选项菜单)

main.xml文件代码如下:

 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >

 2 

 3     <item  4         android:id="@+id/action_menu_1"

 5         android:orderInCategory="100"

 6         android:showAsAction="never"

 7         android:title="菜单一"/>

 8     <item  9         android:id="@+id/action_menu_2"

10         android:orderInCategory="100"

11         android:showAsAction="never"

12         android:title="菜单二"/>

13 

14 </menu>

可以看到两个菜单项,看下菜单项的各个属性:

1、 android:id=   
是菜单项id
2、android:orderInCategory=
是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中
3、android:showAsAction=

  原来是特定版本用到的,当你的应用程序目标设为蜂巢平台(即 Android 3.0)时,你可以利用Action Bar部件提供的全部功能,将你的选项菜单项放在Action Bar的右上角,  对用户来说使用更方便,控制该行为的主菜单项属性是android:showAsAction。 这个属性可接受的值有:

    1.alaways:这个值会使菜单项一直显示在ActionBar上。

    2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。

    3.never:这个值菜单永远不会出现在ActionBar是。

    4.withText:这个值使菜单和它的图标,菜单文本一起显示。

4、android:title=
是菜单项名字


二、动态创建选项菜单

 1 package information;

 2 

 3 import com.example.allcode.R;

 4 

 5 import android.app.Activity;

 6 import android.content.Intent;

 7 import android.os.Bundle;

 8 import android.view.Menu;

 9 import android.view.MenuItem;

10 import android.widget.Toast;

11 

12 public class OptionMenus_text extends Activity{

13     @Override

14     protected void onCreate(Bundle savedInstanceState) {

15         // TODO Auto-generated method stub

16         super.onCreate(savedInstanceState);

17         setContentView(R.layout.optionmenus);

18         

19     }

20 

21     

22     @Override

23     public boolean onCreateOptionsMenu(Menu menu) {

24         // TODO Auto-generated method stub

25         

26         //二、动态添加菜单项

27         MenuItem item = menu.add(1, 100, 1, "菜单一");

28 //第一个参数:用来分组的id,第二个参数:菜单项的id,第三个参数:排序,第四个参数:菜单项文字描述

29         item.setTitle("标题");

30         item.setIcon(R.drawable.icon_72);//api>=11不显示图片

31         menu.add(1, 101, 1, "菜单二");

32         menu.add(1, 102, 1, "菜单三");

33         menu.add(1, 103, 1, "菜单四");

34         return true;

35         

36     }

37     

38     //点击事件

39     

40     @Override

41     public boolean onOptionsItemSelected(MenuItem item) {

42         // TODO Auto-generated method stub

43         //根据菜单项id执行响应事件

44         switch (item.getItemId()) {

45 

46 

47         //动态菜单判断Id,id为第二个参数

48         case 100: 

49             Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();

50             break;

51         case 101:

52             Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();

53             break;

54         case 102:

55             Toast.makeText(OptionMenus_text.this, "点击了菜单三", 1).show();

56             break;

57         case 103:

58             Intent intent = new Intent();

59             intent.setClass(this, AlertDialog_text.class);

60             item.setIntent(intent); //菜单项创建activity的方法

61             break;

62 

63         default:

64             break;

65         }

66         

67         return super.onOptionsItemSelected(item);

68     

69     }

70 }

 

效果图:

 



你可能感兴趣的:(option)