简介:
ContextMenu代表上下文菜单,需要重写onCreateContextMenu()方法,方法的参数是触发菜单的组件。
效果如下:
实现样例:
主活动:
代码语言:javascript复制public class MainActivity extends AppCompatActivity {
//为每个菜单定义一个标识
private final int MENU1 = 0x111;
private final int MENU2 = 0x112;
private final int MENU3 = 0x113;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.txt);
// 为文本框注册上下文菜单
registerForContextMenu(textView);
}
//创建上下文菜单时触发该方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.add(0, MENU1, 0, "红色");
menu.add(0, MENU2, 0, "绿色");
menu.add(0, MENU3, 0, "蓝色");
//将三个菜单项设为单选菜单项
menu.setGroupCheckable(0, true, true);
//设置上下文菜单标题、图标
menu.setHeaderIcon(R.drawable.seek02);
menu.setHeaderTitle("选择背景色");
}
//上下文菜单被单击时触发该方法
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case MENU1:
item.setCheckable(true);
textView.setBackgroundColor(Color.RED);
break;
case MENU2:
item.setCheckable(true);
textView.setBackgroundColor(Color.GREEN);
break;
case MENU3:
item.setCheckable(true);
textView.setBackgroundColor(Color.BLUE);
break;
}
return true;
}
}
布局文件:
代码语言:javascript复制