使用操作功能表

來源:互聯網
上載者:User
   

操作功能表與當前獲得焦點的view關聯,並通過按下軌跡球、D-pad的中鍵,或常按View3秒來觸發。

 

定義和填入操作功能表和Activity菜單類似。為特定的View建立操作功能表有兩種方式。

 

建立操作功能表

 

第一種方式是為View類建立通用的操作功能表,通過重寫View的onCreateContextMenu處理函數,如下:

 

@Override

public void onCreateContextMenu(ContextMenu menu) {

super.onCreateContextMenu(menu);

menu.add(“ContextMenuItem1”);

}

 

這種方式建立的操作功能表會在任何包含View類的Activity中獲得。

 

更加變通的方式是建立Activity指定的操作功能表,通過重寫onCreateContextMenu方法並註冊需要操作功能表的View。註冊View使用registerForContextMenu方法,傳入View,如下代碼所示:

 

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

EditText view = new EditText(this);

setContentView(view);

registerForContextMenu(view);

}

 

一旦View被註冊,任何操作功能表該顯示的時候,onCreateContextMenu處理函數都會被觸發。

 

重寫onCreateContextMenu方法,並檢查哪個View觸發菜單建立,並填入合適的功能表項目,如下面的程式碼片段所示:

 

@Override

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);

menu.setHeaderTitle(“Context Menu”);

menu.add(0, menu.FIRST, Menu.NONE, “Item 1”).setIcon(R.drawable.menu_item);

menu.add(0, menu.FIRST+1, Menu.NONE, “Item 2”).setCheckable(true);

menu.add(0, menu.FIRST+2, Menu.NONE, “Item 3”).setShortcut(‘3’, ‘3’);

SubMenu sub = menu.addSubMenu(“Submenu”);

sub.add(“Submenu Item”);

}

 

如上所示,ContextMenu類支援和Menu類相同的add方法,所以,你可以用和Activity的Menu相同的方法填入操作功能表項目——包括子功能表,但它們倆都不支援表徵圖。你也可以指定操作功能表頭條的文本和表徵圖。

 

Android支援使用Intent Filter運行時填入操作功能表。這個機制允許你指定當前的View呈現的資料類型和詢問其它Android應用程式是否支援一些行為來填入操作功能表。這個行為最普通的例子是EditText控制項上的剪下、拷貝、粘貼功能表項目。這些內容將在下一章詳細描述。

 

處理操作功能表選擇

 

操作功能表項目選擇的處理和Activity的菜單相似。你可以附加一個Intent或者功能表項目Click Listener到每個功能表項目上,或者通過重寫Activity中的onContextItemSelected這個首選技巧。

 

在Activity裡,什麼時候操作功能表項目被選擇,這個事件處理函數就被觸發。一個架構實現如下所示:

 

@Override

public boolean onContextItemSelected(MenuItem item) {

super.onContextItemSelected(item);

[ ... Handle menu item selection ... ]

return false;

}

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.