android中菜单的使用

添加菜单的方法有很多,一般推荐用xml创建菜单。

在res下建立一个menu文件夹,在menu文件里面添加一个xml文件:

[html]  view plain copy

  1.   
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/play"  
  4.           android:title="Play"  
  5.           android:visible="true" />  
  6.     <item android:id="@+id/stop"  
  7.           android:title="Stop"   
  8.           android:visible="true"/>  
  9. </menu>  

将菜单加入应用程序,在OnCreatOptionsMenu()方法里面添加

[java]  view plain copy
  1. @Override  
  2. public boolean onCreateOptionsMenu(Menu menu) {  
  3.     // TODO Auto-generated method stub       
  4.        getMenuInflater().inflate(R.menu.options_menu, menu);  
  5.        return true;  
  6. }  
添加菜单的事件触发, onOptionsItemSelected()事件

  1. public boolean onOptionsItemSelected(MenuItem item) {  
  2.     // TODO Auto-generated method stub  
  3.     int item_id = item.getItemId();  
  4.   
  5.     switch (item_id) {  
  6.     case R.id.play:  
  7.         Intent intent = new Intent(WebTestActivity.this, yypService.class);  
  8.         startService(intent);  
  9.         break;  
  10.     case R.id.stop:  
  11.         this.onStop();  
  12.         break;  
  13.     default:  
  14.         return false;  
  15.     }  
  16.     return true;  
  17.   
  18. }  

本文只是创建菜单的一个大体的框架,细节需要自己改


//==============================另一篇文章===============================

使用xml布局菜单

  目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是 把menu也定义为应用程序的资源 ,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。这一篇就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步:   一般我们都是通过硬编码来增加菜单项的,例如我们之前介绍的。google为此提供了一种更便利的方式,就是
  1. 在/res目录下创建menu文件夹
  2. 在menu目录下使用与menu相关的元素定义xml文件,文件名任意,android会自动为其生成资源ID。例如:R.menu.itemmenu对应menu目录的itemmenu.xml资源文件
  3. 使用xml文件的资源ID,将xml文件中定义的菜单项添加到menu对象中去
  4. 响应菜单项时,使用每个菜单项对应的资源ID

(一)定义资源文件

  在res目录下创建menu文件夹,在menu下创建一个xml资源文件,我这里叫做main_menu.xml


编写main_menu.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- group1 -->
  <group android:id="@+id/group1">
      <item android:id="@+id/mi1"
          android:title="item1"/>
      <item android:id="@+id/mi2"
          android:title="item2"/>
  </group>
  <!-- group 2 -->
  <group android:id="@+id/group2">
      <item android:id="@+id/mi3"
          android:title="item3"/>
      <item android:id="@+id/mi4"
          android:title="item4"/>
  </group>
</menu>

这里简单的添加了4个菜单项,并将其分为2组。item元素的android:title值可以引用values中的string资源。

(二)使用MenuInflater添加菜单项

 MenuInflater在android中建立了从资源文件到对象的桥梁,MenuInflater即把菜单xml资源转换为对象并添加到menu对象中,它可以通过activity的getMenuInflater()得到。我们在MainActivity中重写onCreateOptionsMenu(...)方法。

@Override
publicboolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater
= getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
returntrue;
}
(三)响应菜单

最后重写onOptionsItemSeleted(...)方法。

@Override
publicboolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.mi1:
// do sth
break;
case R.id.mi2:
// do sth
break;
case R.id.mi3:
// do sth
break;
case R.id.mi4:
// do sth
break;
}
return true;
}

这一步最大的体现了使用XML生成菜单的好处。android不仅为我们定义的xml文件生成了资源ID,同样可以为group,menu item来自动生成ID(就像为布局中定义的view生成id那样)。


  至此,我们完成了一个简单的“使用XML生成菜单”的demo,并从中体会到了使用资源文件的好处,因此这是android中创建菜单的推荐方式。实际上,我们在代码中对菜单项或分组的操作都能在xml文件中完成,下面就简单介绍一些比较常用的功能。

(五)更多菜单资源的功能

1.资源文件实现子菜单

子菜单通过在item元素中嵌套menu来实现。

<item android:title="系统设置">
<menu>
<item android:id="@+id/mi_display_setting"
android:title
="显示设置"/>
<item android:id="@+id/mi_network_setting"
android:title
="网络设置"/>
<!-- 别的菜单项 -->
</menu>
</item>
2.为菜单项添加图标

<item android:id="@+id/mi_exit"
android:title
="退出"
android:icon
="@drawable/exit"/>

3.设置菜单项的可选出现

使用android:checkableBehavior设置一组菜单项的可选策略,可选值为:none, all, single

<group android:id="..."
android:checkableBehavior
="all">
<!-- 菜单项 -->
</group>
使用android:checked设置特定菜单项

<item android:id="..."
android:title
="sometitle"
android:checked
="true"/>
4.设置菜单项可用/不可用

<item android:id="..."
android:title
="sometitle"
android:enabled
="false"/>

5.设置菜单项可见/不可见

<item android:id="..."
android:title
="sometitle"
android:visible
="false"/>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值