標籤:icon select XML 粘貼 點擊 建立 out extends generated
什麼是ContextMenu?例如Windows系統的右鍵菜單,在Android中長按某個檔案夾,會跳出菜單,這個菜單就是ContextMenu。ContextMenu與OptionMenu的區別1. OptionMenu對應的是activity,一個activity只能擁有一個選項菜單;2. ContextMenu對應的是View,每一個View都可以設定操作功能表;3. 一般情況下ContextMenu常用於ListView或者GridView。ContextMenu建立方法首先給View 註冊操作功能表registerForContextMenu()添加操作功能表內容 onCreateContextMenu()-- 可以通過代碼動態添加;-- 可以載入xml檔案中的功能表項目。設定菜單點擊後的響應事件 onContextItemSelected()。
1 public class MainActivity extends ActionBarActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.fragment_main); 7 showListView(); 8 9 }10 11 // 設定showListView顯示內容12 private void showListView() {13 ListView listView = (ListView) findViewById(R.id.listView1);14 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,15 android.R.layout.simple_list_item_1, getData());16 listView.setAdapter(adapter);17 this.registerForContextMenu(listView);18 19 }20 21 @Override22 public void onCreateContextMenu(ContextMenu menu, View v,23 ContextMenuInfo menuInfo) {24 // TODO Auto-generated method stub25 super.onCreateContextMenu(menu, v, menuInfo);26 // 設定meun顯示內容27 menu.setHeaderTitle("檔案操作");28 menu.setHeaderIcon(R.drawable.ic_launcher);29 // 方法一 代碼載入30 // menu.add(1, 1, 1, "複製");31 // menu.add(1, 2, 1, "粘貼");32 // menu.add(1, 3, 1, "剪下");33 // menu.add(1, 4, 1, "重新命名");34 // 方法二, xml載入:35 MenuInflater inflater = getMenuInflater();36 inflater.inflate(R.menu.main, menu);37 38 }39 40 // 監聽事件:41 @Override42 public boolean onContextItemSelected(MenuItem item) {43 // TODO Auto-generated method stub44 45 switch (item.getItemId()) {46 // 方法一 代碼載入:47 case 1:48 Toast.makeText(MainActivity.this, "點擊複製", 0).show();49 break;50 51 case 2:52 Toast.makeText(MainActivity.this, "點擊粘貼", 0).show();53 break;54 case 3:55 Toast.makeText(MainActivity.this, "點擊剪下", 0).show();56 break;57 58 case 4:59 Toast.makeText(MainActivity.this, "點擊重新命名", 0).show();60 break;61 // 方法二,xml載入62 case R.id.context_menu_item1:63 Toast.makeText(MainActivity.this, "點擊複製", 0).show();64 break;65 case R.id.context_menu_item2:66 Toast.makeText(MainActivity.this, "點擊粘貼", 0).show();67 break;68 case R.id.context_menu_item3:69 Toast.makeText(MainActivity.this, "點擊剪下", 0).show();70 break;71 case R.id.context_menu_item4:72 Toast.makeText(MainActivity.this, "點擊重新命名", 0).show();73 break;74 75 }76 return super.onContextItemSelected(item);77 }78 79 // 構造listview顯示資料80 private ArrayList<String> getData() {81 82 ArrayList<String> list = new ArrayList<String>();83 for (int i = 1; i < 5; i++) {84 list.add("檔案" + i);85 }86 return list;87 }88 }
Android攻城獅認識ContextMenu