简介:
ContextMenu代表上下文菜单,需要重写onCreateContextMenu()方法,方法的参数是触发菜单的组件。
效果如下:
实现样例:
主活动:
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;
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="用于测试的内容"/>
</android.support.constraint.ConstraintLayout>