コンテキストメニューを表示するには、まずメニューを定義します。
メニュー定義の方法はこちら→「オプションメニューを表示する。その1。」
今回はcontext_menu_sample.xmlというファイル名で以下のようなメニューを定義しました。
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu1" android:title="menu1" ></item> <item android:id="@+id/menu2" android:title="menu2" ></item> <item android:id="@+id/menu3" android:title="menu3" ></item> <item android:id="@+id/menu4" android:title="menu4" ></item> </menu>
次にコード上でコンテキストメニューの表示とメニュー項目選択時の処理を記述します。
おおまかな処理の流れは、
1. Activity.registerForContextMenu()でコンテキストメニューを表示するViewを登録
2. Activity.onCreateContextMenu()でメニューを作成
3. Activity.onContextItemSelected()でメニュー項目が選択されたときの処理を行う
です。
public class ContextMenuSampleActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_context_menu_sample); // registerForContextMenu()でコンテキストメニューを表示するViewを登録 TextView textView = (TextView) findViewById(R.id.editText); registerForContextMenu(textView); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // registerForContextMenu()で登録したViewが長押しされると、 // onCreateContextMenu()が呼ばれる。ここでメニューを作成する。 super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.context_menu_sample, menu); } @Override public boolean onContextItemSelected(MenuItem item) { // コンテキストメニューで項目が選択されるとonContextItemSelected()が呼ばれる。 switch (item.getItemId()) { case R.id.menu1: Toast.makeText(this, "menu1 selected.", Toast.LENGTH_LONG).show(); return true; // 処理に成功したらtrueを返す default: return super.onContextItemSelected(item); } } }このサンプルではテキストビューにコンテキストメニューを設定しています。
実際に動かしてみます。テキストビューを長押しすると、以下のようなメニューが表示されます。
0 件のコメント:
コメントを投稿