读书人

玩转Android-UI篇-Menu(菜单)

发布时间: 2012-09-29 10:30:01 作者: rapoo

玩转Android---UI篇---Menu(菜单)

Android系统里面有3种类型的菜单:options menu,context menu,sub menu。?

options menu ?: 按Menu键就会在屏幕下面显示,一个弹出的菜单。?
??? 它包括两种菜单项:?
???????? 因为options menu在屏幕底部最多只能显示6个菜单项,这些菜单项称为icon menu,icon menu只支持文字(title) 以及icon,可以设置快捷键,不支持checkbox以及radio控件,所以不能设置checkable选项。?
???????? 而多于6的菜单项会以“more” icon menu来调出,称为expanded menu。它不支持icon,其他的特性都和icon menu一样!?

在Activity里面,用options menu的使用方法如下:?

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, 1, 1, R.string.exit);

menu.add(0, 2, 2, R.string.about);

return super.onCreateOptionsMenu(menu);

}

?? ? ?创建options menu,这个函数只会在menu第一次显示时调用。?

?

public boolean onOptionsItemSelected(MenuItem item) {

if(item.getItemId()==1)

{

finish();

}else if(item.getItemId()==2)

{

Toast toast=Toast.makeText(this, "这是个Menu菜单的练习", Toast.LENGTH_SHORT);

toast.show();

}

return super.onOptionsItemSelected(item);

}?
?? ? onOptionsItemSelected (MenuItem item) 处理选中的菜单项。

?

实例如下:

MenuTest.java

package org.hualang.menu;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MenuTest extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);            }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.add(0, 1, 1, R.string.exit);menu.add(0, 2, 2, R.string.about);return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubif(item.getItemId()==1){finish();}else if(item.getItemId()==2){Toast toast=Toast.makeText(this, "这是个Menu菜单的练习", Toast.LENGTH_SHORT);toast.show();}return super.onOptionsItemSelected(item);}    }

?String.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MenuTest!</string>    <string name="app_name">MenuTest</string>    <string name="exit">退出</string>    <string name="about">关于</string></resources>

?main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="Menu菜单实例"    /></LinearLayout>

?运行结果如下:点击Menu按钮


玩转Android-UI篇-Menu(菜单)
?当点击退出时候,就会退出程序,当点击关于的时候会弹出一个Toast


玩转Android-UI篇-Menu(菜单)

?

sub menu?
?? ?上面的menu都可以加入子菜单,但子菜单不能嵌套子菜单,这意味着在Android系统,菜单只有两层,设计时需要注意的!同时子菜单不支持icon。?所以这个时候可以在option menu中加入可以嵌套的菜单 sub menu

只需要在刚才的代码中的onCreateOptionMenu中加入

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.add(0, 1, 1, R.string.exit);menu.add(0, 2, 2, R.string.about);SubMenu subMenu = menu.addSubMenu(1, 100, 100, "游戏");subMenu.add(2, 3, 3, "铁拳");        subMenu.add(2, 4, 4, "流行蝴蝶剑");return super.onCreateOptionsMenu(menu);}

?再次运行后,点击MENU按钮,会弹出3个选项


玩转Android-UI篇-Menu(菜单)
?当点击“游戏”选项的时候,就会弹出如下效果


玩转Android-UI篇-Menu(菜单)

1 楼 dalianlgw 2012-03-06 很详尽,很具体!受用了

读书人网 >Android

热点推荐