public class MainActivity extends Activity {
private TextView text_show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_show = (TextView) this.findViewById(R.id.text_show);
// 创建上下文菜单时:要先注册,而选项菜单就不用注册
registerForContextMenu(text_show);//注册上下文菜单,长按TextView显示出来
}
// 上下文菜单创建
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// 第一种:静态menu(菜单)的生成方法,XML文件中创建
getMenuInflater().inflate(R.menu.menu, menu);
// 第二种:动态创建菜单:用代码创建
// menu.add(Menu.NONE, 1, Menu.NONE, "选项一");
// menu.add(Menu.NONE, 2, Menu.NONE, "选项二");
// menu.add(Menu.NONE, 3, Menu.NONE, "选项三");
super.onCreateContextMenu(menu, v, menuInfo);
}
// 上下文菜单监听回调
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_setting:
Toast.makeText(this, "用户设置", 500).show();
break;
case R.id.menu_exit:
Toast.makeText(this, "用户退出", 500).show();
break;
case R.id.font_red:
text_show.setTextColor(Color.RED);
break;
}
return super.onContextItemSelected(item);
}
// OptionMenu 选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 第一种:静态menu(菜单)的生成方法,XML文件中创建
getMenuInflater().inflate(R.menu.menu, menu);
// 第二种:动态创建菜单:用代码创建
// menu.add(groupId, itemId, order, titleRes)
// groupId:组 itemId:选项的id order:排序号 titleRes:选项名
menu.add(Menu.NONE, 1, Menu.NONE, "选项一");
menu.add(Menu.NONE, 2, Menu.NONE, "选项二");
menu.add(Menu.NONE, 3, Menu.NONE, "选项三");
return super.onCreateOptionsMenu(menu);
}
// OptionMenu 选项菜单监听
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_setting:
Toast.makeText(this, "用户设置", 500).show();
break;
case R.id.menu_exit:
Toast.makeText(this, "用户退出", 500).show();
break;
case R.id.font_red:
text_show.setTextColor(Color.RED);
break;
case 1:
Toast.makeText(this, "选项一", 500).show();
break;
case 2:
Toast.makeText(this, "选项2", 500).show();
break;
case 3:
Toast.makeText(this, "选项3", 500).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
//菜单配置文件 放在文件夹res/menu/下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- orderInCategory="1" 决定菜单选项排序 -->
<!-- showAsAction="always"在顶部显示菜单键 -->
<item
android:id="@+id/menu_setting"
android:orderInCategory="2"
android:title="设置">
</item>
<item
android:id="@+id/menu_exit"
android:orderInCategory="3"
android:title="退出">
</item>
<!-- 二级普通菜单: -->
<item
android:id="@+id/menu_color"
android:orderInCategory="1"
android:title="颜色设置">
<menu>
<group>
<item
android:id="@+id/font_red"
android:title="red"/>
<item
android:id="@+id/font_blue"
android:title="blue"/>
<item
android:id="@+id/font_green"
android:title="green"/>
<item
android:id="@+id/font_yellow"
android:title="yellowed">
</item>
</group>
</menu>
</item>
<!-- 二级可选项菜单: -->
<item
android:id="@+id/menu_font"
android:orderInCategory="1"
android:title="字体设置">
<!-- checkableBehavior 属性有三个可选值: all 为多选, single 为单选, none 为不可选。为 none 时就是一个普通菜单 -->
<menu>
<group android:checkableBehavior="single" >
<item
android:id="@+id/font_20"
android:title="20sp"/>
<item
android:id="@+id/font_30"
android:title="30sp"/>
<item
android:id="@+id/font_40"
android:title="40sp"/>
<item
android:id="@+id/font_50"
android:title="50sp">
</item>
</group>
</menu>
</item>
</menu>
上下文菜单