標籤:android
在Android中長按住一個控制項(像一個文本顯示框TextView,一個按鈕Button都是一個控制項)彈出的菜單為操作功能表,建立一個操作功能表分為下面幾個步驟:
1、覆寫onCreateContextMenu方法,產生對應的菜單子選項。
2、覆寫onContextItemSelected方法,產生對應子選項的響應事件。
3、為一個控制項註冊操作功能表。
下面看一個小例子:
1、在MainActivity的xml檔案中添加一個TextView控制項,ID為myTextV:
<TextView android:id="@+id/myTextV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />
2、在MainActivity編寫相應代碼:
package com.yangzi.contextmenu;import android.os.Bundle;import android.app.Activity;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.widget.TextView;public class MainActivity extends Activity { // 聲明菜單子選項ID號 private static final int ITEM1 = Menu.FIRST; private static final int ITEM2 = ITEM1 + 1; private static final int ITEM3 = ITEM1+2; //聲明TextView控制項 private TextView myTextV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到文本顯示控制項 myTextV = (TextView)findViewById(R.id.myTextV); //為該文本控制項註冊操作功能表 registerForContextMenu(myTextV); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /* * 覆寫onCreateContextMenu方法,建立上下午菜單 * * */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { /* * add方法的參數說明: * 參數一:group ID(int) :組ID,用於標示該子選項屬於哪一個組 * 參數二:item ID(int) :子選項ID,用於標示該子選項 * 參數三:order ID(int): 顯示順序,用於標示該子選項顯示順序,預設為0,表示按添加順序顯示 * 參數四:title (String): 用於定義該子選項的顯示文字 * * */ menu.add(0,ITEM1,0,"背景紅色"); menu.add(0,ITEM2,0,"背景黃色"); menu.add(0,ITEM3,0,"背景藍色"); } /* * 覆寫該方法,添加相應的菜單相應事件 * * */ @Override public boolean onContextItemSelected(MenuItem item) { /* * 根據選擇的子選項(通過item ID來區分),進行不同的響應 * * 這裡使用的顏色資源要在res/values檔案夾內的color.xml檔案中聲明 * * */ switch (item.getItemId()) { case ITEM1: //設定文本顯示控制項的背景 myTextV.setBackgroundColor(getResources().getColor(R.color.red)); break; case ITEM2: myTextV.setBackgroundColor(getResources().getColor(R.color.yellow)); break; case ITEM3: myTextV.setBackgroundColor(getResources().getColor(R.color.white)); break; default: break; } return true; }}
自己動手試試,觀察效果吧!
Android中的操作功能表(ContextMenu)使用案例