Menu 演示
- 重载onCreateOptionsMenuMenu创建菜单
-
重写 onOptionsItemSelected()方法,处理菜单项的选中
-
新建项目MenuDemo,修改res/layout/main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:text="@string/button1" android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="@string/button2" android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
一个TextView和两个Button,@string/button1 @符号表示解析器应当对@后的名字进行解析,解析器会从values/string.xml里取出button1变量的值进行替换。
2. 编辑MenuDemo类,添加成员变量两个菜单项和两个按钮。
public class MenuDemo extends Activity {
public static final int ITEM0 = Menu.FIRST;
public static final int ITEM1 = Menu.FIRST + 1;
Button button1;
Button button2;
3. 在onCreate()方法中添加代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.btn1);
button2 = (Button)findViewById(R.id.btn2);
//设置按钮不可见
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.INVISIBLE);
}
将button1和button2隐藏起来。
4. 重载onCreateOptionsMenu()方法创建Menu:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO 按下手机上的menu按键时发生。
super.onCreateOptionsMenu(menu);
menu.add(0,ITEM0,0,"0显示button1");
menu.add(0,ITEM1,1,"0显示button2");
menu.add(1,ITEM0,0,"1显示button1");
menu.add(1,ITEM1,1,"1显示button2");
menu.add(2,ITEM0,0,"2显示button1");
menu.add(2,ITEM1,1,"2显示button2");
menu.add(3,ITEM0,5,"3.1显示button1");
menu.add(3,ITEM1,6,"3.2显示button2");
menu.add(3,ITEM0,5,"3.3显示button1");
menu.add(3,ITEM1,6,"3.4显示button2");
menu.findItem(ITEM1);
return true;
}
Menu.add()方法添加菜单项,第一个参数是组id,第二个参数是唯一的menuitemid,第三个是排序,第四个参数是菜单显示的文字。
5. 重写 onOptionsItemSelected()方法,处理菜单项的选中
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case ITEM0:
onClickMenu1();
break;
case ITEM1:
onClickMenu2();
break;
}
return super.onOptionsItemSelected(item);
}
private void onClickMenu1(){
setTitle("ClickMenu1");
button1.setVisibility(View.VISIBLE);
button2.setVisibility(View.INVISIBLE);
}
private void onClickMenu2(){
setTitle("ClickMenu2");
button1.setVisibility(View.INVISIBLE);
button2.setVisibility(View.VISIBLE);
}
MenuItem. getItemId()方法返回选中的菜单id,然后自定义菜单的处理方法在两个按钮之间切换显示和隐藏。
im@xingquan.org