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>
上下文菜单java