安卓开发_浅谈OptionsMenus(选项菜单)

简介: Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的。

Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。

当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的。

 

这里就先学习 选项菜单OptionsMenus

创建选项菜单有两种方式

一、xml文件静态创建

 7 package information;
 8 
 9 import com.example.allcode.R;
10 
11 import android.app.Activity;
12 import android.content.Intent;
13 import android.os.Bundle;
14 import android.view.Menu;
15 import android.view.MenuItem;
16 import android.widget.Toast;
17 
18 public class OptionMenus_text extends Activity{
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         // TODO Auto-generated method stub
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.optionmenus);
24         
25     }
26 
27     
28     @Override
29     public boolean onCreateOptionsMenu(Menu menu) {
30         // TODO Auto-generated method stub
31         //一、xml的形式静态添加菜单项    
32         getMenuInflater().inflate(R.menu.main,menu);
33         
34         return true;
35         
36     }
37     
38     //点击事件
39     
40     @Override
41     public boolean onOptionsItemSelected(MenuItem item) {
42         // TODO Auto-generated method stub
43         //根据菜单项id执行响应事件
44         switch (item.getItemId()) {
45         //静态菜单 判断Id 
46          case R.id.action_menu_1:
47              Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();
48              break;
49          case R.id.action_menu_2:
50              Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();
51 
52     
53 
54         default:
55             break;
56         }
57         
58         return super.onOptionsItemSelected(item);
59     
60     }
61 }
32         getMenuInflater().inflate(R.menu.main,menu);
看这一行代码,

我们找到其对应的文件

main.xml文件代码如下:

 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
 2 
 3     <item
 4         android:id="@+id/action_menu_1"
 5         android:orderInCategory="100"
 6         android:showAsAction="never"
 7         android:title="菜单一"/>
 8     <item
 9         android:id="@+id/action_menu_2"
10         android:orderInCategory="100"
11         android:showAsAction="never"
12         android:title="菜单二"/>
13 
14 </menu>

可以看到两个菜单项,看下菜单项的各个属性:

1、 android:id=   
是菜单项id
2、android:orderInCategory=
是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中
3、android:showAsAction=

  原来是特定版本用到的,当你的应用程序目标设为蜂巢平台(即 Android 3.0)时,你可以利用Action Bar部件提供的全部功能,将你的选项菜单项放在Action Bar的右上角,  对用户来说使用更方便,控制该行为的主菜单项属性是android:showAsAction。 这个属性可接受的值有:

    1.alaways:这个值会使菜单项一直显示在ActionBar上。

    2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。

    3.never:这个值菜单永远不会出现在ActionBar是。

    4.withText:这个值使菜单和它的图标,菜单文本一起显示。

4、android:title=
是菜单项名字


二、动态创建选项菜单

 1 package information;
 2 
 3 import com.example.allcode.R;
 4 
 5 import android.app.Activity;
 6 import android.content.Intent;
 7 import android.os.Bundle;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 import android.widget.Toast;
11 
12 public class OptionMenus_text extends Activity{
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         // TODO Auto-generated method stub
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.optionmenus);
18         
19     }
20 
21     
22     @Override
23     public boolean onCreateOptionsMenu(Menu menu) {
24         // TODO Auto-generated method stub
25         
26         //二、动态添加菜单项
27         MenuItem item = menu.add(1, 100, 1, "菜单一");
28 //第一个参数:用来分组的id,第二个参数:菜单项的id,第三个参数:排序,第四个参数:菜单项文字描述
29         item.setTitle("标题");
30         item.setIcon(R.drawable.icon_72);//api>=11不显示图片
31         menu.add(1, 101, 1, "菜单二");
32         menu.add(1, 102, 1, "菜单三");
33         menu.add(1, 103, 1, "菜单四");
34         return true;
35         
36     }
37     
38     //点击事件
39     
40     @Override
41     public boolean onOptionsItemSelected(MenuItem item) {
42         // TODO Auto-generated method stub
43         //根据菜单项id执行响应事件
44         switch (item.getItemId()) {
45 
46 
47         //动态菜单判断Id,id为第二个参数
48         case 100: 
49             Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();
50             break;
51         case 101:
52             Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();
53             break;
54         case 102:
55             Toast.makeText(OptionMenus_text.this, "点击了菜单三", 1).show();
56             break;
57         case 103:
58             Intent intent = new Intent();
59             intent.setClass(this, AlertDialog_text.class);
60             item.setIntent(intent); //菜单项创建activity的方法
61             break;
62 
63         default:
64             break;
65         }
66         
67         return super.onOptionsItemSelected(item);
68     
69     }
70 }

 

效果图:

 



相关文章
|
3月前
|
存储 移动开发 JavaScript
比较H5开发与安卓开发
比较H5开发与安卓开发
65 2
|
6月前
|
XML Java 数据库
[总结]安卓开发工程师之路
[总结]安卓开发工程师之路
|
7月前
|
IDE Java 开发工具
安卓开发环境
安卓开发环境
57 0
|
Java Android开发
今年安卓开发中碰到的几个稀奇古怪的问题
如果你也遇到了,请保持淡定~ 1.SIGBUS和SIGSEGV 首先是这两个名词的说明: SIGBUS(Bus error)意味着指针所对应的地址是有效地址,但总线不能正常使用该指针。
1359 0
|
JSON 数据库 Android开发
值得一试的Android开发工具
分享几个觉得好用的工具,希望能帮到你 可视化数据库调试工具stetho 以前,在调试Android数据库时要进去Android Device Monitor,把响应db文件导出,使用工具进行查看,如果更新了数据库,想再次查看,又得重复进行这一操作...
1272 0
|
Android开发 开发工具
重拾安卓_01_安卓开发环境搭建(android studio)
一、下载安装SDK 参考:搭建Android开发环境——Eclipse  的安装SDK部分   二、安装android studio  参考: Android Studio 入门级教程(一)   三、android studio 配置  参考: Android Studio 入门级教程(一)     四、参考资料 1.
1264 0
|
开发工具 Android开发
重拾安卓_01_安卓开发环境搭建(eclipse)
一、下载安装Android SDK  1.下载地址 (1)官网(可FQ选择):http://developer.android.com/sdk/index.html (2)不可FQ选择:http://www.androiddevtools.cn/    2.下载过程记录 这里选择第二种方式,进入 http://www.androiddevtools.cn/ ,点击导航栏 Android SDK 工具 -> SDK Tools,选择一个版本进行安装,这里选择的是第二个版本(考虑可能最新版会不稳定)进行下载。
1036 0
|
Android开发
Android应用开发-onNewIntent()
转载自Android中 activity 的onNewIntent函数
796 0