菜单分为硬件菜单和上下文菜单。
1、新建工程,名为contextmenu,
2、修改MainActivity.java为如下代码:
package com.example.contextmenu;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt=(Button) findViewById(R.id.bt);
MainActivity.this.registerForContextMenu(bt);
//如果同时触发上下文菜单和长按监听,则上下文菜单失效
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("lhm", "被点击了");
}
});
}
//创建硬件菜单的方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1,0,0,"关于");
SubMenu sm=menu.addSubMenu(2, 0, 0, "文件");
sm.add(2, 1, 0, "打开");
sm.add(2, 2, 0, "关闭");
menu.add(3,0,0,"设置");
return true;
}
//监听硬件菜单的方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getGroupId()) {
case 1:
Log.d("lhm", "点击关于");
break;
case 2:
Log.d("lhm", "点击文件");
switch (item.getItemId()) {
case 1:
Log.d("lhm", "点击文件的打开");
break;
case 2:
Log.d("lhm", "点击文件的关闭");
break;
default:
break;
}
break;
case 3:
Log.d("lhm", "点击设置");
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
//创建上下文菜单的方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.setHeaderIcon(R.drawable.ic_launcher);
menu.setHeaderTitle("上下文菜单");
menu.add(1,0,0,"关于");
SubMenu sm=menu.addSubMenu(2, 0, 0, "文件");
sm.add(2, 1, 0, "打开");
sm.add(2, 2, 0, "关闭");
menu.add(3,0,0,"设置");
super.onCreateContextMenu(menu, v, menuInfo);
}
//监听上下文菜单的方法
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getGroupId()) {
case 1:
Log.d("lhm", "点击关于");
break;
case 2:
Log.d("lhm", "点击文件");
switch (item.getItemId()) {
case 1:
Log.d("lhm", "点击文件的打开");
break;
case 2:
Log.d("lhm", "点击文件的关闭");
break;
default:
break;
}
break;
case 3:
Log.d("lhm", "点击设置");
break;
default:
break;
}
return super.onContextItemSelected(item);
}
}