Android三種菜單一實例分析

來源:互聯網
上載者:User

Android三種菜單一實例分析

   本文執行個體講述了Android的三種菜單。分享給大家供大家參考。具體分析如下:

  Android的菜單分為三種類型:選項菜單(Option Menu)、操作功能表(Context Menu)、子功能表(Sub Menu)

  一.選項菜單

  當使用者單擊裝置上的功能表按鈕(Menu),觸發事件彈出的菜單就是選項菜單。選項菜單最多隻有六個,超過六個第六個就會自動顯示 更多 選項來展示顯示。

  建立方法:

  1、覆蓋Activity的onCreateOptionsMenu(Menu menu)方法,當我們第一次開啟菜單時調用。

  2、調用Menu的add()方法添加功能表項目(MenuItem),可以調用MenuItem的setIcon()方法為功能表項目設定表徵圖。

  3、當功能表項目(MenuItem)被選中時,覆蓋Acitivy的onOptionsMenuSelected()方法響應事件。

  二、操作功能表

  當使用者長按Activity頁面時,彈出的菜單我們稱為操作功能表。我們經常在Windows中用滑鼠右鍵單擊彈出的菜單就是操作功能表。

  1、覆蓋Activity的onCreateContextMenu()方法,調用Menu的add方法添加功能表項目MenuItem

  2、覆蓋onContextItemSelected()方法,響應菜單單擊事件

  3、調用registerForContextMenu()方法,為視圖註冊操作功能表

  三、子功能表

  子功能表就是將相同功能的分組進行多級顯示的一種菜單,比如,Windows的“檔案”菜單中就有“建立”,“開啟”,“關閉”等子功能表。

  建立子功能表的方法

  1、覆蓋Activity的onCreateOptionsMenu()方法,調用Menu的addSubMenu()方法添加子功能表項

  2、調用SubMenu的add()飯飯,添加子功能表項

  3、覆蓋onCreateItemSelected()方法,響應菜單單擊事件

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

public class Main extends Activity {

// 功能表項目ID

// FIRST為Menu類中的整形常量

private static final int ITEM1 = Menu.FIRST;

private static final int ITEM2 = Menu.FIRST + 1;

private static final int ITEM3 = Menu.FIRST + 2;

private static final int ITEM4 = Menu.FIRST + 3;

private static final int ITEM5 = Menu.FIRST + 4;

private static final int ITEM6 = Menu.FIRST + 5;

private static final int ITEM7 = Menu.FIRST + 6;

TextView myTV;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myTV = (TextView) findViewById(R.id.myTV);

// 此時為myTv設定操作功能表,長按TextView時響應函數

registerForContextMenu(myTV);

}

@Override

// 點擊功能表按鈕響應的事件

public boolean onCreateOptionsMenu(Menu menu) {

/* 一下代碼為選項菜單測試

// 添加功能表項目

// public abstract MenuItemadd(int groupId, int itemId, int order, CharSequence title)

// 菜單所在的group,菜單的ID,排列順序,顯示的文字

// add()方法返回一個MenuItem對象。而setIcon是MenuItem的方法

menu.add(0, ITEM1, 0, "開始").setIcon(R.drawable.ic_launcher);

menu.add(0, ITEM2, 0, "開始1");

menu.add(1, ITEM3, 0, "開始2");

menu.add(1, ITEM4, 0, "開始3");

menu.add(1, ITEM5, 0, "開始4");

// menu.add(0, ITEM6, 0, "開始5");

// menu.add(0, ITEM7, 0, "開始6");

*/

/**

* 以下代碼為添加子功能表的測試代碼

*/

// 添加子功能表

SubMenu subFile = menu.addSubMenu("檔案");

SubMenu editFile = menu.addSubMenu("編輯");

// 為子功能表添加功能表項目

subFile.add(0, ITEM1, 0, "建立");

subFile.add(0, ITEM2, 0, "開啟");

return true;

}

@Override

// 菜單被選中時觸發的事件

public boolean onOptionsItemSelected(MenuItem item) {

/*

// 在此說明一下,Menu相當於一個容器,而MenuItem相當於容器中容納的東西

switch(item.getItemId()) {

case ITEM1:

// 設定Activity的Title

setTitle("開始遊戲1");

break;

case ITEM2:

setTitle("開始遊戲2");

break;

case ITEM3:

setTitle("開始遊戲3");

break;

case ITEM4:

setTitle("開始遊戲4");

break;

case ITEM5:

setTitle("開始遊戲5");

break;

case ITEM6:

setTitle("開始遊戲6");

break;

case ITEM7:

setTitle("開始遊戲7");

break;

}

*/

/**

* 子功能表項響應代碼

*/

switch(item.getItemId()) {

case ITEM1:

// 設定Activity的Title

setTitle("建立檔案");

break;

case ITEM2:

setTitle("開啟檔案");

break;

}

return true;

}

@Override

// 建立操作功能表

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

// 向操作功能表中添加功能表項目

// 注意此處的menu是ContextMenu

menu.add(0, ITEM1, 0, "紅色背景");

menu.add(0, ITEM2, 0, "綠色背景");

menu.add(1, ITEM3, 0, "白色背景");

}

@Override

public boolean onContextItemSelected(MenuItem item) {

switch(item.getItemId()) {

case ITEM1:

myTV.setBackgroundColor(Color.RED);

break;

case ITEM2:

myTV.setBackgroundColor(Color.GREEN);

break;

case ITEM3:

myTV.setBackgroundColor(Color.WHITE);

break;

}

return true;

}

}

  希望本文所述對大家的Android程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.