Android應用開發基礎篇(10)—–Menu(菜單)

來源:互聯網
上載者:User

一、概述

     Menu,簡單來理解就是當你按下手機的“menu”鍵時所彈出來的視窗,它被廣泛應用著,幾乎在每個應用中都有它的身影。


二、要求

    用兩種方式實現菜單功能。


三、實現

     建立工程MyMenu,修改/res/layout/main.xml檔案,主要是修改了裡面的TextView,完整的main.xml檔案如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="這是一個菜單測試程式"
11 android:gravity="center_horizontal"
12 />
13
14 </LinearLayout>

接著,修改MyMenuActivity.java檔案,主要是覆寫了onCreateOptionsMenu()和onOptionsItemSelected()這兩個方法,在onCreateOptionsMenu()方法裡增加7個選項,比較簡單,完整的內容如下:

 

 1 package com.nan.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 MyMenuActivity extends Activity
10 {
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState)
14 {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.main);
17
18 }
19
20 @Override
21 //當"menu"按鈕被按下時執行這個函數
22 public boolean onCreateOptionsMenu(Menu menu)
23 {
24 menu.add(0, 0, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
25 menu.add(0, 1, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
26 menu.add(0, 2, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
27 menu.add(0, 3, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
28 menu.add(0, 4, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
29 menu.add(0, 5, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
30 menu.add(0, 6, Menu.NONE, "菜單").setIcon(android.R.drawable.btn_star);
31
32 return super.onCreateOptionsMenu(menu);
33 }
34
35
36 //當菜單中某項被選中時執行這個函數
37 @Override
38 public boolean onOptionsItemSelected(MenuItem item)
39 {
40 switch(item.getItemId())
41 {
42 case 0:displayToast("第0項被選中");break;
43 case 1:displayToast("第1項被選中");break;
44 case 2:displayToast("第2項被選中");break;
45 case 3:displayToast("第3項被選中");break;
46 case 4:displayToast("第4項被選中");break;
47 case 5:displayToast("第5項被選中");break;
48 case 6:displayToast("第6項被選中");break;
49
50 }
51
52 return super.onOptionsItemSelected(item);
53 }
54
55 /*
56 @Override
57 public boolean onCreateOptionsMenu(Menu menu)
58 {
59 MenuInflater inflater = getMenuInflater();
60 inflater.inflate(R.menu.menu, menu);
61 return super.onCreateOptionsMenu(menu);
62 }
63
64 @Override
65 public boolean onOptionsItemSelected(MenuItem item)
66 {
67 int item_id = item.getItemId();
68
69 switch(item_id)
70 {
71 case R.id.mlist:
72 {}
73 }
74 return super.onOptionsItemSelected(item);
75 }
76 */
77
78
79
80 //顯示Toast函數
81 private void displayToast(String s)
82 {
83 Toast.makeText(this, s, Toast.LENGTH_LONG).show();
84 }
85
86 }

注釋那段內容後面再解釋,先運行這個程式看看:

 

點擊"menu"按鍵,可以看到彈出了一個菜單視窗,如下:

 

接著,隨便點擊一項,效果如下:

 

好了。這是實現的一種方法,第二種實現方法就是把上面程式中的第55~76行的注釋取消掉,然後將第19~54行加上注釋,重新運行程式,OK。

附:

     可以看到用第一種方法建立菜單最多隻可以顯示5項,第6項變成“more”,其他選項就在"more"裡面,而第二種方法則可以用我們自己定義的布局來作為菜單選項,那麼就變得靈活多了。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.