(轉)Android新的menu實現——ActionMode

來源:互聯網
上載者:User

標籤:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.