android添加菜单选项,安卓菜单的实现,各种添加菜单的方法。

本文详细介绍了Android中菜单栏的创建,包括简单的创建菜单、设置分组和属性、响应菜单事件,以及通过监听和Intent处理菜单项。此外,还讲解了子菜单的使用和上下文菜单的注册、生成及响应。通过XML文件添加菜单的部分也进行了说明,包括设置菜单项的图标、可选性、可用性和可见性。文章提供了丰富的代码示例,帮助开发者深入理解Android菜单系统的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)选项菜单

1、简单的创建菜单:

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 @Override

2 public booleanonCreateOptionsMenu(Menu menu) {

3 super.onCreateOptionsMenu(menu);

4

5 //添加菜单

6 menu.add("菜单选项1");

7 /*

8 * pram1:组号 pram2:唯一的ID号 pram3:排序号 pram4:标题

9 */

10 menu.add(1, Menu.FIRST, Menu.FIRST, "菜单选项2");

11

12 //希望显示菜单就返回true

13 return true;

14 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

2、菜单的分组以及简单属性:

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 @Override

2 public booleanonCreateOptionsMenu(Menu menu) {

3 super.onCreateOptionsMenu(menu);

4

5 int group1 = 1;

6 int group2 = 2;

7 menu.add(group1, 1, 1, "item1");

8 menu.add(group1, 2, 2, "item2");

9 menu.add(group2, 3, 3, "item3");

10 menu.add(group2, 4, 4, "item4");

11

12 //menu.removeGroup(group1);//删除一个组

13 //menu.setGroupVisible(group1, false);//设置可见性

14 //menu.setGroupEnabled(group2, false);//设置是否可点

15 //menu.setGroupCheckable(group2, true, t);//设置一组菜单的勾选情况

16 return true;

17 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

3、响应菜单

一、通过onOptionsItemSelected方法

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 @Override

2 public booleanonOptionsItemSelected(MenuItem item) {

3 //响应每个菜单项(通过菜单项的ID)

4 switch(item.getItemId()) {

5 case 1:

6 //do something here

7 break;

8 case 2:

9 //do something here

10 break;

11 case 3:

12 //do something here

13 break;

14 case 4:

15 Toast.makeText(this, "hello", 0).show();

16 break;

17 default:

18 //对没有处理的事件,交给父类来处理

19 return super.onOptionsItemSelected(item);

20 }

21 //返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了

22 return true;

23 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

二、通过监听

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 //第一步:创建监听器类

2 class MyMenuItemClickListener implementsOnMenuItemClickListener {

3 @Override

4 publicboolean onMenuItemClick(MenuItem item) {

5 //do something here...

6 return true; //finish handling

7 }

8 }

9 //第二步:为菜单项注册监听器

10 menuItem.setOnMenuItemClickListener(new MyMenuItemClickListener());

fcecaa27ea5212ceb9bf034c36bfbf34.gif

三、通过Intent

(二)子菜单subMenu

注意:Menu可以包含多个SubMenu及menuItem,SubMenu可以包含多个MenuItem,,但是SubMenu不能包含SubMenu。

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 @Override

2 public booleanonCreateOptionsMenu(Menu menu) {

3 //一个menu中可以添加多个子菜单

4 SubMenu subMenu=menu.addSubMenu(1,1, 0, "子菜单");

5

6 //在子菜单中添加多个菜单选项

7 MenuItem menuItem1=subMenu.add(1, 1, 0, "菜单选项1");

8 subMenu.add(1, 2, 1,"菜单选项2");

9 subMenu.add(1, 3, 2,"菜单选项3");

10 subMenu.add(1, 4, 3,"菜单选项4");

11

12 //子菜单不支持显示图标,尽管这样设置不会报错

13 subMenu.setIcon(R.drawable.ic_launcher);

14

15 //设置菜单选项的图标

16 menuItem1.setIcon(R.drawable.ic_launcher);

17 return true;

18 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

(三)上下文菜单ContextMenu

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 packagecom.zzw.contextMenu;

2

3 importandroid.app.Activity;

4 importandroid.os.Bundle;

5 importandroid.util.Log;

6 importandroid.view.ContextMenu;

7 importandroid.view.ContextMenu.ContextMenuInfo;

8 importandroid.view.MenuItem;

9 importandroid.view.View;

10 importandroid.widget.ArrayAdapter;

11 importandroid.widget.ListView;

12 importandroid.widget.Toast;

13

14 public class MainActivity extendsActivity {

15 private static final String TAG = "MainActivity";

16 ListView listView;

17

18 @Override

19 protected voidonCreate(Bundle savedInstanceState) {

20 Log.d(TAG, "onCreate");

21

22 super.onCreate(savedInstanceState);

23 setContentView(R.layout.activity_main);

24 listView =(ListView) findViewById(R.id.listView);

25

26 simpleShowList();

27 //1.在activity的onCreate方法中为一个view注册上下文菜单

28 this.registerForContextMenu(listView);

29

30 }

31

32 //2.在onCreateContextMenu中生成上下文菜单。

33 @Override

34 public voidonCreateContextMenu(ContextMenu menu, View v,

35 ContextMenuInfo menuInfo) {

36 Log.d(TAG, "onCreateContextMenu_start");

37

38 menu.setHeaderTitle("上下文菜单标题");

39 menu.add(0, 1, 0, "选项1");

40 menu.add(0, 2, 0, "选项2");

41 menu.add(0, 3, 0, "选项3");

42

43 Log.d(TAG, "onCreateContextMenu_stop");

44 }

45

46 //3.在onContextItemSelected中响应上下文菜单项。

47 @Override

48 public booleanonContextItemSelected(MenuItem item) {

49 Log.d(TAG, "onContextItemSelected_start");

50 int item_id =item.getItemId();

51 switch(item_id) {

52 case 1:

53 Toast.makeText(this, "我是上下文菜单选项1", 0).show();

54 break;

55 case 2:

56

57 break;

58 case 3:

59

60 break;

61

62 default:

63 return super.onContextItemSelected(item);

64 }

65 Log.d(TAG, "onContextItemSelected_stop");

66 return true;

67 }

68

69 private voidsimpleShowList() {

70 Log.d(TAG, "simpleShowList_start");

71 String[] showList = { "显示1", "显示2", "显示3", "显示4"};

72

73 ArrayAdapter adapter = new ArrayAdapter(this,

74 android.R.layout.simple_expandable_list_item_1, showList);

75

76 listView.setAdapter(adapter);

77 Log.d(TAG, "simpleShowList_stop");

78 }

79

80 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

d2d319f59dc9e83650b4801c31ff2102.png

b576a728c71abc5c22b428d179fb4abb.png

(四)通过XML文件添加菜单

1.在res文件下创建menu文件夹,一般默认有的,在里面new出一个Android xml File来编辑自己的菜单

2.编辑自己的xml

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 <?xml version="1.0" encoding="utf-8"?>

2

3

4

5

6

7

8

9 android:id="@+id/item1"

10 android:title="菜单选项1(子菜单)">

11

12

13

14

15 android:icon="@drawable/ic_launcher"

16 android:id="@+id/item1_1"

17 android:title="子菜单内选项1"/>

18

19 android:id="@+id/item1_2"

20 android:title="子菜单内选项2"/>

21

22

23

24 android:id="@+id/item2"

25 android:title="菜单选项2">

26

27

28

29

30 android:id="@+id/item3"

31 android:title="菜单选项4">

32

33

34 android:id="@+id/item4"

35 android:title="菜单选项5">

36

37

38

39

fcecaa27ea5212ceb9bf034c36bfbf34.gif

3.在activity中获取:

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1 @Override

2 public booleanonCreateOptionsMenu(Menu menu) {

3 MenuInflater in =getMenuInflater();

4 in.inflate(R.menu.main, menu);

5 return true;

6 }

7

8 @Override

9 public booleanonOptionsItemSelected(MenuItem item) {

10 switch(item.getItemId()) {

11 caseR.id.item1:

12 13 break;

14 caseR.id.item2:

15

16 break;

17

18 default:

19 return super.onOptionsItemSelected(item);

20 }

21

22 return true;

23 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

528ce9952a5ac690186b11e1bce9a4ac.png

9ff984880b2d486b37fd8c46fcb4f4a1.png

一些基本的属性:

设置菜单icon

1

2 android:id="@+id/item1"

3 android:title="菜单选项1"

4 android:icon="@drawable/ic_launcher"

5 />

设置菜单选项的可选,android:checkableBehavior,chencked

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1

2

3 android:checkableBehavior="all" >

4

5

6 android:id="@+id/item1"

7 android:title="菜单选项1"

8 >

9

10

11 android:id="@+id/item2"

12 android:checked="true"

13 android:title="菜单选项2">

14

15

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1e3622508cdb545b1e65a2b42b8e8ace.png

设置菜单可用不可用android:enable

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1

2

3 android:id="@+id/item1"

4 android:title="菜单选项1"

5 android:enabled="true"

6 >

7

8

9 android:id="@+id/item2"

10 android:title="菜单选项2"

11 android:enabled="false">

12

13

fcecaa27ea5212ceb9bf034c36bfbf34.gif

b21f7ea91b424b22dae5e68cedc56157.png

设置菜单选项是否可见android:visible

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1

2

3 android:id="@+id/item1"

4 android:title="菜单选项1"

5 android:visible="true"

6 >

7

8

9 android:id="@+id/item2"

10 android:title="菜单选项2"

11 android:visible="false">

12

13

14

fcecaa27ea5212ceb9bf034c36bfbf34.gif

223e8c6b0a1699319d6a8f56b0d03f9b.png

原文:http://www.cnblogs.com/labixiaoxin/p/5032951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值