コンテキストメニューを表示するには、まずメニューを定義します。
メニュー定義の方法はこちら→「オプションメニューを表示する。その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 件のコメント:
コメントを投稿