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

android中Menu的实现方法

2012-12-08 11:09 417 查看
有两种方法可以为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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: