/*
* ContextMenu menu(上下文菜单)=====》长按控件时会触发
* 主要步骤:
* 1.在res/menu中创建菜单文件
* 2.重写onCreateContextMenu方法,在这个方法中加载菜单项
* 3.重写onContextItemSelected方法,用于处理用户的选择事件
* 4.注册上下文菜单给相应的控件,调用registerForContextMenu方法
*
*/
①在res/menu中创建菜单文件
public class MainActivity extends Activity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText_01);
④
//给view注册上下文菜单,当view控件被长按时,会弹出上下文菜单
registerForContextMenu(editText);
}
②
//该方法会在菜单被创建的时候回调
/*
* 参数含义如下:
* 1、ContextMenu menu ====》 菜单对象
* 2、View v ======》 用户长按的控件
* 3、ContextMenuInfo menuIfo ====》 相关信息
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//在此方法中进行加载菜单项
//设置的菜单的标题
menu.setHeaderTitle("菜单标题名称");
//添加菜单项,把布局好的menu文件加载给菜单
super.getMenuInflater().inflate(R.menu.my_context_menu, menu);
//这里除了从布局文件中加载菜单项,还可以利用代码的形式添加,如下:
//1.得到子菜单对象
SubMenu subMenu = menu.addSubMenu(0, 4, 4, "主菜单选项");
//2.给子菜单对象添加选项
subMenu.add("子菜单选线1");
subMenu.add("子菜单选项2");
subMenu.add("子菜单选项3");
}
③
//该方法会在用户点击上下文菜单项后出发,这里我做了把点击菜单项的文本赋值给EditText实现选择输入的功能
/*
* 1、item =====》被点击的上下文菜单项
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
editText.setText(item.getTitle());
//这里手动返回true,大概的意思是自己给时间做处理,而返回false的时候是系统帮忙监听处理,在有操作修改的情况下,返回true能避免Bug
return true;
}
}