android怎么添加菜单,Android APPs添加菜单的两种方式 (转)

android:id="@+id/next"

android:title="@string/next"

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

在Activity类中调用刚刚创建的Menu,首先将当前的Activity与指定的Menu XML相关联:

1.@Override

2.public boolean onCreateOptionsMenu(Menu menu) {

3.    super.onCreateOptionsMenu(menu);

4.    getMenuInflater().inflate(R.layout.player_menu, menu);

5.    return true;

6.}

实现onOptionsItemSelected方法: (其目的是捕捉到菜单触发事件后,对具体触发的选项作出响应,实际调用的函数包含在各自的case中)

01.@Override

02.public boolean onOptionsItemSelected(MenuItem item) {

03.    switch (item.getItemId()) {

04.    case R.id.previous:

05.        previous(); //go to previous song in the playlist

06.        return true;

07.    case R.id.play_pause:

08.        isPlaying() ? pause() : play(); //toggle play/pause

09.        return true;

10.    case R.id.next:

11.        next(); //go to next song in the playlist

12.        return true;

13.    }

14.    return false; //should never happen

15.}

最后可以通过onPrepareOptionMenu方法初始化Menu Items的属性:

01.@Override

02.public boolean onPrepareOptionsMenu(Menu menu) {

03.    //set play_pause menu item look

04.    if(isPlaying()) {

05.        menu

06.            .findItem(R.id.play_pause)

07.            .setTitle(R.string.pause)

08.            .setIcon(android.R.drawable.ic_media_pause);

09.    } else {

10.        menu

11.            .findItem(R.id.play_pause)

12.            .setTitle(R.string.play)

13.            .setIcon(android.R.drawable.ic_media_play);

14.    }

15.    return true;

16.}

大部分程序都通过这种方式添加Menu菜单功能,而且通过以上的步骤来看,其实现方法非常简单。

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

首先需要定义Menu Item识别序号:

1.public static final MENU_PREVIOUS = 0; //no more R.ids

2.public static final MENU_PLAY_PAUSE = 1;

3.public static final MENU_NEXT = 2;

实现onCreateOptionMenu()方法:(第一种方法中已经通过xml定义了现成的Menu结构,所以不需要应用这个方法)

01.@Override

02.public boolean onCreateOptionsMenu(Menu menu) {

03.    menu

04.        .add(0, MENU_PREVIOUS, 0, R.string.previous)

05.        .setIcon(android.R.drawable.ic_media_previous);

06.    menu

07.        .add(0, MENU_PLAY_PAUSE, 0, R.string.play)

08.        .setIcon (android.R.drawable.ic_media_play);

09.    menu

10.        .add(0, MENU_NEXT, 0, R.string.next)

11.        .setIcon(android.R.drawable.ic_media_next);

12.    return true;

13.}

引用与第一种方法相同的方式来捕捉菜单的行为:

01.@Override

02.public boolean onOptionsItemSelected(MenuItem item) {

03.    switch (item.getItemId()) {

04.    case MENU_PREVIOUS:

05.        previous(); //go to previous song in the playlist

06.        return true;

07.    case MENU_PLAY_PAUSE:

08.        isPlaying() ? pause() : play(); //toggle play/pause

09.        return true;

10.    case MENU_NEXT:

11.        next(); //go to next song in the playlist

12.        return true;

13.    }

14.    return false; //should never happen

15.}

————

对以上两种方法的补充:

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

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

设置Menu Item从属关系(添加子父级别):

直接写在方法中:

1.menu

2.        .addSubMenu(R.id.repeat)

3.        .add(R.id.one)

4.        .add(R.id.all)

5.        .add(R.id.none);

直接定义在XML Layout中:

?View Code XML

android:id="@+id/repeat"

android:title="@string/repeat">

android:id="@+id/one"

android:title="@string/repeat_one">

android:id="@+id/all"

android:title="@string/repeat_all">

android:id="@+id/none"

android:title="@string/repeat_none">

————

这两种不同的方法实现的目的是一样的,而且不存在本质上的却别,具体根据实际情况(根据项目的结构需要或者团队开发标准)选择合适的方法来创建Menu。

阅读(3930) | 评论(0) | 转发(0) |

给主人留下些什么吧!~~

评论热议

请登录后评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值