Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習筆記——Menu(二)

Android學習筆記——Menu(二)

編輯:關於Android編程

知識點:            這次將繼續上一篇文章沒有講完的Menu的學習,上下文菜單(Context menu)和彈出菜單(Popup menu)。      上下文菜單               上下文菜單提供對UI界面上的特定項或上下文框架的操作,就如同Windows中右鍵菜單一樣。                 在Android中,有兩種提供上下文操作的方式:一種是在浮動的上下文菜單(長按彈出)中,另一種是上下文操作模式裡。                                  那麼怎樣創建一個浮動的上下文菜單(floating context menu)呢?                  1.調用registerForContextMenu()方法為View注冊上下文菜單。                  2. 在Activity或Fragment中實現onCreateContextMenu()方法。                  3.實現onContextItemSelected()方法以響應用戶長按菜單項的事件。                  下面是一個上下文菜單的demo:                    復制代碼  1     private TextView textView;  2     final int RED = 0x101;  3     final int BLUE = 0x102;  4     final int GREEN = 0x103;  5     @Override  6     protected void onCreate(Bundle savedInstanceState) {  7         super.onCreate(savedInstanceState);  8         setContentView(R.layout.activity_main);  9          10         textView=(TextView)findViewById(R.id.textView); 11         //給textView注冊上下文菜單 12         registerForContextMenu(textView); 13     } 14 //創建上下文菜單 15     @Override 16     public void onCreateContextMenu(ContextMenu menu, View v, 17             ContextMenuInfo menuInfo) { 18         menu.add(0, RED, 0, "Red"); 19         menu.add(0, BLUE, 0, "Blue"); 20         menu.add(0,GREEN,0,"Green"); 21         menu.setHeaderTitle("Set the color of the textView"); 22         menu.setGroupCheckable(0, true, true); 23     } 24     //菜單項響應事件 25     @Override 26     public boolean onContextItemSelected(MenuItem item) { 27           switch (item.getItemId()) { 28         case GREEN: 29             item.setChecked(true); 30             textView.setBackgroundColor(Color.GREEN); 31             break; 32         case BLUE: 33             item.setChecked(true); 34             textView.setBackgroundColor(Color.BLUE); 35             break; 36         case RED: 37             item.setChecked(true); 38             textView.setBackgroundColor(Color.RED); 39             break; 40         } 41          return true; 42     } 復制代碼         使用上下文操作模式          上下文操作模式是實現系統ActionMode接口,關注用戶的交互來實現上下文操作行為。當用戶通過選擇菜單項來觸發這個模式,一個可供用戶對剛選擇的菜單項進行操作的上下文action bar出現在屏幕頂部。用戶可選擇多項(select multi items)、取消選擇(deselect)、操作完成(Done)、返回(BACK)等操作。            那麼什麼時候調用上下文操作模式呢?            在下面兩種情況下調用:             1.用戶對View執行長按(long-click)操作。             2.用戶在View中選擇了復選框(checkbox)或者類似的UI組件。             怎麼啟用上下文操作模式呢?             這也分兩種情況:              1.針對獨立的View                 首先實現 ActionMode.Callback接口,然後調用startActionMode()方法。              2.針對ListView或GirdView(或其他AbsListView的拓展)                實現 AbsListView.MultiChoiceModeListener接口,調用setMultiChoiceModeListener()方法,最後傳入CHOICE_MODE_MULTIPLE_MODAL參數調用setChoiceMode()方法。             1     private ListView listView;  2     @Override  3     protected void onCreate(Bundle savedInstanceState) {  4         super.onCreate(savedInstanceState);  5         setContentView(R.layout.activity_main);  6           7         listView=(ListView)findViewById(R.id.listview1);  8         String arr[]={"New York","Shanghai","Los Angle","BeiJing","Paris","Tykyo","Moscow","Berlin","HongKong"};  9         //將數組包裝成ArrayAdapter 10         ArrayAdapter<String> adapter1= new ArrayAdapter<String>(this,R.layout.array_item ,arr); 11         listView.setAdapter(adapter1); 12          13         listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 14         listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { 15              16             @Override 17             public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 18                 // TODO Auto-generated method stub 19                 return false; 20             } 21              22             @Override 23             public void onDestroyActionMode(ActionMode mode) { 24                 // TODO Auto-generated method stub 25                  26             } 27              28             @Override 29             public boolean onCreateActionMode(ActionMode mode, Menu menu) { 30                 // TODO Auto-generated method stub 31                     MenuInflater inflater = mode.getMenuInflater(); 32                     inflater.inflate(R.menu.contextmenu, menu); 33                     return true; 34             } 35              36             @Override 37             public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 38                switch (item.getItemId()) { 39             case R.id.done: 40                 Toast.makeText(MainActivity.this, "You have clicked the DONE", Toast.LENGTH_LONG).show(); 41                 break; 42             case R.id.cancel: 43                 Toast.makeText(MainActivity.this, "You have clicked the CANCEL", Toast.LENGTH_LONG).show(); 44             default: 45                 break; 46             }     47                 return true; 48             } 49              50             @Override 51             public void onItemCheckedStateChanged(ActionMode mode, int position, 52                     long id, boolean checked) { 53                 // TODO Auto-generated method stub 54                  55             } 56         }); 57     }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved