[摘要]ndroid中的菜单是用户界面中最常见的元素,使用也很频繁,在Android中,菜单被分为3种,分别为选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。本文先讲选项菜单(OptionsMenu)的使用。 Android手机上有个Menu按键,当Menu按下的时候,
Android中的菜单是用户界面中最常见的元素,使用也很频繁,在Android中,菜单被分为3种,分别为选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。本文先讲选项菜单(OptionsMenu)的使用。
Android手机上有个Menu按键,当Menu按下的时候,每个Activity都可以选择处理这一请求,在屏幕底部弹出一个菜单,这个菜单我们就叫做选项菜单(OptionsMenu),一般情况下,选项菜单最多能显示2排3个菜单选项。这些菜单项中可以设定图标,文字。菜单项如果多于6项,从第6项开始出现一个More选项,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。
我们先浏览下效果图(如下):
我们要在Activity中除了覆盖 onCreate(Bundle savedInstanceState);方法外,也要覆盖onCreateOptionsMenu(Menu menu)和onOptionsItemSelected(MenuItem item)方法。代码如下:
复制到剪贴板 Java代码
-
view plaincopy to clipboardprint?
-
package ***;
-
-
import ***ty;
-
import ***;
-
import ***;
-
import ***Item;
-
import ***;
-
-
public class TestActivity extends Activity {
-
-
//定义Menu菜单选项的ItemId
-
final static int ONE = ***;
-
final static int TWO = ***+1;
-
final static int THREE = ***+2;
-
final static int FOUR = ***+3;
-
final static int FIVE = ***+4;
-
final static int SIX = ***+5;
-
final static int SEVEN = ***+6;
-
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(***);
-
}
-
-
//创建Menu菜单
-
public boolean onCreateOptionsMenu(Menu menu) {
-
***(0, ONE, 0, "第一").setIcon(***); //设置文字与图标
-
***(0, TWO, 0, "第二");
-
***(0, THREE, 0, "第三");
-
***(0, FOUR, 0, "第四");
-
***(0, FIVE, 0, "第五");
-
***(0, SIX, 0, "第六");
-
***(0, SEVEN, 0, "第七");
-
return super.onCreateOptionsMenu(menu);
-
}
-
-
//点击Menu菜单选项响应事件
-
public boolean onOptionsItemSelected(MenuItem item) {
-
switch(***mId()){
-
case 1:
-
***xt(this, "你点击了第一", ***_SHORT).show();
-
break;
-
case 2:
-
***xt(this, "你点击了第二", ***_SHORT).show();
-
break;
-
}
-
return super.onOptionsItemSelected(item);
-
}
-
-
//选项菜单被关闭事件,菜单被关闭有三种情形,menu按钮被再次点击、
-
//back按钮被点击或者用户选择了某一个菜单项
-
public void onOptionsMenuClosed(Menu menu) {
-
***xt(this, "你关闭了选项菜单", ***_SHORT).show();
-
}
-
-
//菜单被显示之前的事件
-
public boolean onPrepareOptionsMenu(Menu menu) {
-
***xt(this,
-
"选项菜单显示之前onPrepareOptionsMenu方法会被调用",***_LONG).show();
-
//如果返回false,此方法就把用户点击menu的动作给消费了,
-
//onCreateOptionsMenu方法将不会被调用
-
return true;
-
}
-
}
(责任编辑:北大青鸟西安兆隆)