標籤:
Android的menu有多種實現方式,以前寫過一篇Android中五種常用的menu(菜單),這裡介紹一種新的menu實現方式:ActionMode。ActionMode是Android 3.0以後出現的,我們可以使用AppCompat庫使ActionMode相容至Android 2.1。
Android 3.0以前,我們處理列表的長按事件經常使用Context Menu,Android3.0以後,我們有了新的選擇:ActionMode。左邊效果為Context Menu右邊效果為ActionMode。
Android開發人員應該都熟悉Context Menu了,Context Menu是懸浮在操作項之上的視圖。ActionMode是臨時佔據了ActionBar的位置。下面給出ActionMode的實現方法。
使用ActionMode需要兩步驟:
1、實現ActionMode.Callback介面,並處理ActionMode的生命週期,ActionMode的生命週期如:
private ActionMode.Callback mCallback = new ActionMode.Callback() { @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public void onDestroyActionMode(ActionMode mode) { // TODO Auto-generated method stub } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.actionmode, menu); return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { boolean ret = false; if (item.getItemId() == R.id.actionmode_cancel) { mode.finish(); ret = true; } return ret; } };
2、事件觸發時,調用startActionMode()方法。
someView.setOnLongClickListener(new View.OnLongClickListener() { // Called when the user long-clicks on someView public boolean onLongClick(View view) { if (mActionMode != null) { return false; } // Start the CAB using the ActionMode.Callback defined above mActionMode = getActivity().startActionMode(mActionModeCallback); view.setSelected(true); return true; } });
/*** @author 張興業* http://blog.csdn.net/xyz_lmn* iOS入門群:83702688
* android開發進階群:241395671* 我的新浪微博:
@張興業TBOW*/
參考:
http://developer.android.com/reference/android/view/ActionMode.Callback.html
http://developer.android.com/guide/topics/ui/menus.html
(轉)Android新的menu實現——ActionMode