Android 菜单——上下文菜单、选择菜单以及子菜单

本文主要介绍标签控件上下文菜单、选择菜单以及子菜单的实现,具体操作看代码。

一、上下文菜单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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值