本文主要介绍标签控件上下文菜单、选择菜单以及子菜单的实现,具体操作看代码。
一、上下文菜单ContextMenu
1.ContextMenuActivity.java
public class ContextMenuActivity extends Activity {
private final static int ITEM0=Menu.FIRST;
private final static int ITEM1=Menu.FIRST+1;
private final static int ITEM2=Menu.FIRST+2;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.context_menu);
setTitle("单击Menu键看到效果!");
tv=(TextView)findViewById(R.id.tv1);
this.registerForContextMenu(tv);//将上下文注册到TextView
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(0, ITEM0, 0, "红色背景");
menu.add(0,ITEM1,0,"绿色背景");
menu.add(0,ITEM2,0,"白色背景");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM0:
tv.setTextColor(Color.RED);
break;
case ITEM1:
tv.setTextColor(Color.GREEN);
break;
case ITEM2:
tv.setTextColor(Color.WHITE);
break;
default:
break;
}
return true;
}
}
2.布局文件context_menu.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:id="@+id/tv1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="长按这里触发"
android:textSize="50dip"
/>
</LinearLayout>
3.注意:需要在AndroidManifest.xml注册相应Activity.
二、选择菜单OptionsMenu
1.OptionsMenuActivity.java
//OptionsMenu测试
public class OptionsMenuActivity extends Activity {
private final static int ITEM0=Menu.FIRST;
private final static int ITEM1=Menu.FIRST+1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("单击Menu键看到效果!");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//第一个参数:组ID 第二个参数:菜单项ID 第三个参数:顺序号 第四个参数:菜单项上显示的内容
menu.add(0,ITEM0,0,"开始");
menu.add(0,ITEM1,0,"结束");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM0:
setTitle("开始游戏");
break;
case ITEM1:
setTitle("结束游戏");
break;
default:
break;
}
return true;
}
}
2.注意:需要在AndroidManifest.xml注册相应Activity.
三、子菜单SubMenu
1. SubMenuActivity.java
//子菜单subMenu
public class SubMenuActivity extends Activity {
private final static int ITEM_NEW_FILE=Menu.FIRST;
private final static int ITEM_OPEN_FILE=Menu.FIRST+1;
private final static int ITEM_COPY=Menu.FIRST+2;
private final static int ITEM_CLOSE=Menu.FIRST+3;
private final static int ITEM_SAVE=Menu.FIRST+4;
private final static int ITEM_SAVE_ALL=Menu.FIRST+5;
private final static int ITEM_CUT=Menu.FIRST+6;
private final static int ITEM_PASTE=Menu.FIRST+7;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sub_menu);
setTitle("单击Menu键看到效果!");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu file=menu.addSubMenu("文件");
SubMenu edit=menu.addSubMenu("编辑");
file.add(0,ITEM_NEW_FILE,0,"新建");
file.add(0,ITEM_OPEN_FILE,0,"打开");
file.add(0,ITEM_CLOSE,0,"关闭");
file.add(0,ITEM_SAVE,0,"保存");
file.add(0,ITEM_SAVE_ALL,0,"保存全部");
edit.add(0,ITEM_COPY,0,"复制");
edit.add(0,ITEM_CUT,0,"剪切");
edit.add(0,ITEM_PASTE,0,"粘贴");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM_NEW_FILE:
setTitle("新建文件!");
break;
case ITEM_OPEN_FILE:
setTitle("打开文件");
break;
case ITEM_COPY:
setTitle("复制文件");
break;
default:
break;
}
return true;
}
}
2.布局文件sub_menu.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="子菜单操作"
/>
</LinearLayout>
3.注意:需要在AndroidManifest.xml注册相应Activity.