操作功能表
又稱長按菜單。當一個視圖註冊了操作功能表時,執行一個在該對象上長按(2秒)的動作,將出現一個具有相關功能的浮動菜單。
類概述
擴充自Menu的操作功能表提供了修改操作功能表頭(header)的功能。
操作功能表不支援功能表項目的捷徑和表徵圖。
公用方法public abstract void clearHeader ()清除操作功能表頭的資訊。(包括圖片和文字資訊)
public abstract ContextMenu setHeaderIcon (Drawable icon)
為操作功能表頭設定表徵圖
public abstract ContextMenu setHeaderIcon (int iconRes)
設定操作功能表頭表徵圖為指定的資源id
public abstract ContextMenu setHeaderTitle (int titleRes)
通過資源標識符為操作功能表頭的標題列設定文字。
public abstract ContextMenu setHeaderTitle (CharSequence title)
設定操作功能表的標題,顯示在標題列
public abstract ContextMenu setHeaderView (View view)
設定View 到操作功能表頭上。將替代操作功能表頭的表徵圖和標題(或者替代你之前設定的headerView)
程式碼範例當執行長按操作功能表時,大多數情況會調用registerForContextMenu(View) 函數和重寫執行onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)函數。因為要建立一個操作功能表,你必須重寫這個活動的上下文回呼函數onCreateContextMenu() 並且 通過registerForContextMenu(View) 為其註冊操作功能表。
註冊操作功能表
registerForContextMenu(lv);//為ListView添加操作功能表
添加功能表項目
@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {// TODO Auto-generated method stub try { AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; JSONObject object = mData.getJSONObject(info.position); menu.setHeaderTitle(object.getString("title")); } catch (Exception e) { return; }menu.add(0, 1, 0, "刪除該聊天");menu.add(0, 2, 0, "置頂聊天");super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {// TODO Auto-generated method stubAdapterContextMenuInfo itemInfo = (AdapterContextMenuInfo) item.getMenuInfo();try {JSONObject object = mData.getJSONObject(itemInfo.position);switch (item.getItemId()) {case 1:Toast.makeText(this, object.getString("title"), Toast.LENGTH_LONG).show();break;default:break;}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}return super.onContextItemSelected(item);}
長按“姓名2”
點擊“刪除該聊天”