您的位置:首页 > 移动开发 > Android开发

Android应用开发基础篇(10)-----Menu(菜单)

2016-02-03 09:55 701 查看
链接地址:/article/5068113.html

一、概述

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"里面,而第二种方法则可以用我们自己定义的布局来作为菜单选项,那么就变得灵活多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: