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