快捷菜单
当用户点击界面上某个元素超过2秒后,将启动注册到该界面的快捷菜单。
步骤:
1.代码动态生成菜单
final static int CONTEXT_MENU_1 = Menu.FIRST;
final static int CONTEXT_MENU_2 = Menu.FIRST+1;
final static int CONTEXT_MENU_3 = Menu.FIRST+2;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
menu.setHeaderTitle("快捷菜单");
menu.add(0, CONTEXT_MENU_1, 0, "快捷菜单子项1");
menu.add(0, CONTEXT_MENU_2, 0, "快捷菜单子项2");
menu.add(0, CONTEXT_MENU_3, 0, "快捷菜单子项3");
}
- 说明:
- onCreateContextMenu() 第1个参数:需要显示的菜单menu
- onCreateContextMenu() 第2个参数:v 是用户点击的界面元素
- onCreateContextMenu() 第3个参数:所选界面元素的额外信息
2.设置响应事件代码
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
TextView label = (TextView)findViewById(R.id.textView_1);
switch(item.getItemId()){
case CONTEXT_MENU_1:
label.setText("菜单子项1");
return true;
case CONTEXT_MENU_2:
label.setText("菜单子项2");
return true;
case CONTEXT_MENU_3:
label.setText("菜单子项3");
return true;
}
return false;
}
3.将快捷菜单注册到界面中的某个元素
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView label = (TextView)findViewById(R.id.textView_1);
registerForContextMenu(label);
}
说明:使用registerForContextMenu() 将快捷菜单注册到界面中的某个控件,长按此控件启动快捷菜单
示例程序: