コンテキストメニュー

コンテキストメニューは、長押しすると出てくるメニューです。
下の例では、テキスト1とテキスト2を長押しするとそれぞれ異なるコンテキストメニューを表示し、
メニューの項目をタップするとその項目にあった文字列をトーストで表示します。

※packageとimportの宣言は省略。
public class MainActivity extends Activity {
  private TextView text1, text2;
   private static final int TEXT1_MENUITEM1 = 1;
   private static final int TEXT1_MENUITEM2 = 2;
   private static final int TEXT2_MENUITEM1 = 3;
   private static final int TEXT2_MENUITEM2 = 4;

  @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

      text1 = new TextView(this);
       text1.setText("テキスト1");

      text2 = new TextView(this);
       text2.setText("テキスト2");

      LinearLayout layout = new LinearLayout(this);
       layout.setOrientation(LinearLayout.VERTICAL);
       setContentView(layout);

      LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
       layout.addView(text1, lp1);

      LayoutParams lp2 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
       layout.addView(text2, lp2);

      // コンテキストメニューの登録
       registerForContextMenu(text1);
       registerForContextMenu(text2);
   }

  // コンテキストメニュー作成時
   @Override
   public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
       if (v.equals(text1)) {
           menu.add(Menu.NONE, TEXT1_MENUITEM1, Menu.NONE, "メニュー1");
           menu.add(Menu.NONE, TEXT1_MENUITEM2, Menu.NONE, "メニュー2");
       }
       else if (v.equals(text2)) {
           menu.add(Menu.NONE, TEXT2_MENUITEM1, Menu.NONE, "メニュー3");
           menu.add(Menu.NONE, TEXT2_MENUITEM2, Menu.NONE, "メニュー4");
       }
   }

  // コンテキストメニューの項目選択時
   @Override
   public boolean onContextItemSelected(MenuItem item) {
       switch (item.getItemId()) {
           case TEXT1_MENUITEM1:
               Toast.makeText(this, "メニュー1", Toast.LENGTH_LONG).show();
               break;
           case TEXT1_MENUITEM2:
               Toast.makeText(this, "メニュー2", Toast.LENGTH_LONG).show();
               break;
           case TEXT2_MENUITEM1:
               Toast.makeText(this, "メニュー3", Toast.LENGTH_LONG).show();
               break;
           case TEXT2_MENUITEM2:
               Toast.makeText(this, "メニュー4", Toast.LENGTH_LONG).show();
               break;
           default:
               return super.onContextItemSelected(item);
       }

      return true;
   }
}


参考資料




コメントを投稿するには画像の文字を半角数字で入力してください。


画像認証

  • 最終更新:2013-07-18 15:23:44

このWIKIを編集するにはパスワード入力が必要です

認証パスワード