您的位置:首页 > 运维架构

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

2015-01-08 20:24 344 查看
Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的。这里就先学习 选项菜单OptionsMenus创建选项菜单有两种方式一、xml文件静态创建
package information;

import com.example.allcode.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class OptionMenus_text extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.optionmenus);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
//一、xml的形式静态添加菜单项
getMenuInflater().inflate(R.menu.main,menu);

return true;

}

//点击事件

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
//根据菜单项id执行响应事件
switch (item.getItemId()) {
//静态菜单 判断Id
case R.id.action_menu_1:
Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();
break;
case R.id.action_menu_2:
Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();

default:
break;
}

return super.onOptionsItemSelected(item);

}
}
32         getMenuInflater().inflate(R.menu.main,menu);
看这一行代码,
我们找到其对应的文件
main.xml文件代码如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/action_menu_1"
android:orderInCategory="100"
android:showAsAction="never"
android:title="菜单一"/>
<item
android:id="@+id/action_menu_2"
android:orderInCategory="100"
android:showAsAction="never"
android:title="菜单二"/>

</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=
是菜单项名字

二、动态创建选项菜单
package information;

import com.example.allcode.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class OptionMenus_text extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.optionmenus);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub

//二、动态添加菜单项
MenuItem item = menu.add(1, 100, 1, "菜单一");
//第一个参数:用来分组的id,第二个参数:菜单项的id,第三个参数:排序,第四个参数:菜单项文字描述
item.setTitle("标题");
item.setIcon(R.drawable.icon_72);//api>=11不显示图片
menu.add(1, 101, 1, "菜单二");
menu.add(1, 102, 1, "菜单三");
menu.add(1, 103, 1, "菜单四");
return true;

}

//点击事件

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
//根据菜单项id执行响应事件
switch (item.getItemId()) {

//动态菜单判断Id,id为第二个参数
case 100:
Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();
break;
case 101:
Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();
break;
case 102:
Toast.makeText(OptionMenus_text.this, "点击了菜单三", 1).show();
break;
case 103:
Intent intent = new Intent();
intent.setClass(this, AlertDialog_text.class);
item.setIntent(intent); //菜单项创建activity的方法
break;

default:
break;
}

return super.onOptionsItemSelected(item);

}
}
效果图:

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