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

android中Menu的实现方法

2012-12-11 13:59 323 查看
有两种方法可以为Android
APPs添加菜单功能,下边将对设置过程给出详细的介绍:

第一种方法,通过Layout来添加静态菜单元素。

1.在res下添加资源文件I。右键res文件夹,创建一个静态的Menu,创建方法参阅下边的源代码:

view plain

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

<menu
xmlns:android="http://schemas.android.com/apk/res/android">

<item

android:id="@+id/previous"

android:title="@string/previous"

android:enabled="false"

android:icon="@android:drawable/ic_media_previous"/>

<!--these
may not be available in next api (level
> 3), so be carefull-->

<item

android:id="@+id/play_pause"

android:title="@string/play"

android:icon="@android:drawable/ic_media_play"/>

<item

android:id="@+id/next"

android:title="@string/next"

android:icon="@android:drawable/ic_menu_next"/>

</menu>

2.在Activity端通过将当前的Activity与指定的Menu XML相关联:

view plain

@Override

public
boolean
onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

getMenuInflater().inflate(R.menu.menu,
menu);

return
true;

}

3.如果需要动态初始化MenuItem也可以通过onPrepareOptionMenu方法:

view plain

@Override

public
boolean
onPrepareOptionsMenu(Menu menu) {

if(isPlaying())
{

menu

.findItem(int
idRes)

.setTitle(String
title)

.setIcon(int
iconRes);

}
else
{

menu

.findItem(int
idRes)

.setTitle(String
title)

.setIcon(int
iconRes);

}

return
true;

}

4.监听MenuItem的选中状态。可以通过Activity的 onOptionsItemSelected或者onMenuItemSelected()方法。下面以onMenuItemSelected为例。

view plain

public
boolean onMenuItemSelected(int
featureId, MenuItem item){

switch(item.getItemId()){

case
R.id.add :

//code

return
true
;

case
R.id.delete :

//code

return
true
;

}

return
false;

}

二、第二种方法,在Activity类中动态创建Menu。

1.需要定义Menu Item的ID:

2.在OnCreateOptionsMenu方法中进行初始化

3.与第一种同样的事件监听。

三、对以上两种方法的补充:

根据需要设置不同Menu Item的属性:

1.menu.findItem(R.id.next).setEnabled(false);

设置Menu Item添加子菜单(SubMenu):

直接写在方法中:

menu.addSubMenu(R.id.repeat)

子菜单的建立于Menu类似。

如:通过静态文件得到的:

view plain

<item
android:id="@+id/SubMenu"
android:title="@string/repeat">

<menu>

<item
android:id="@+id/SubMenu_item01"
</item>

</menu>

</item>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: