ホーム > カテゴリ > Java・Android >

アクションバー(オプションメニュー)とコンテキストメニュー [Android Studio]

Android Studioの使い方(目次)

目次

1. 作るもの
2. 画面設計
  2-1. メイン
  2-2. オプションメニュー
  2-3. コンテキストメニュー
3. コーディング
4. アクションバーを非表示にする

事前準備

メニューの[ファイル][新規]の「新規プロジェクト」でプロジェクトを作成します。その時にアクティビティは「空のアクティビティ」を選択します。

※アクティビティ名は「MainActivity」とします

1. 作るもの

アクティビティ(画面)のアクションバーに「オプションメニュー」と「戻る」を追加します。また、TextViewを長押しすると「コンテキストメニュー」を表示します。

コーディングでは各イベントにも対応します。

2. 画面設計

2-1. メイン

デフォルトの「Hello World」のText ViewのIDをtextViewにする。

2-2. オプションメニュー

resの上で右クリックで[新規][Androidリソースディレクト]を選択します。

ディレクトリ名、リソースタイプをmenuにしてOKボタンを押します。

menuの上で右クリックで[新規][Menuリソースファイル]を選択します。

ファイル名にoption_menuを入力してOKボタンを押します。

次のようになります。

option_menu.xmlをダブルクリックしてデザインモードにします。そして、パレットから「Menu Item」を3つドロップします。

各メニューアイテムは次のように設定します。Iconは右側の「...」をクリック後に、Drawableのandroidから適当に選んでください。

次のようになります。(アイコンは適当でOK)

2-3. コンテキストメニュー

menuの上で右クリックで[新規][Menuリソースファイル]を選択します。ファイル名にcontext_menuを入力してOKボタンを押します。

パレットから「Menu Item」を2つドロップします。各メニューアイテムは次のように設定します。

これで、画面設計は完了です。

3. コーディング

[MainActivity.java]

import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // アクションバーに戻るを表示する
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        // コンテキストメニューをTextViewに設定する
        registerForContextMenu(findViewById(R.id.textView));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // オプションメニューを作成する
        getMenuInflater().inflate(R.menu.option_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        // コンテキストメニューを作成する
        super.onCreateContextMenu(menu, v, menuInfo);
        getMenuInflater().inflate(R.menu.context_menu,menu);
        menu.setHeaderTitle("コンテキストメニュー");
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        String str= "";

        // オプションメニュー
        switch (item.getItemId()){
            case R.id.item1 : str="アイテム1";break;
            case R.id.item2 : str="アイテム2";break;
            case R.id.item3 : str="アイテム3";break;
            case android.R.id.home : str="戻る";break;
        }

        new AlertDialog.Builder(MainActivity.this)
                .setTitle("情報")
                .setMessage(str +"が選択されました。")
                .setPositiveButton("OK", null)
                .show();

        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        String str= "";

        // コンテキストメニュー
        switch (item.getItemId()){
            case R.id.itemC1 : str="アイテム1";break;
            case R.id.itemC2  : str="アイテム2";break;
        }

        new AlertDialog.Builder(MainActivity.this)
                .setTitle("情報")
                .setMessage(str +"が選択されました。")
                .setPositiveButton("OK", null)
                .show();

        return super.onContextItemSelected(item);
    }
}

4. アクションバーを非表示にする

res\valuesのstyles.xmlの

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

にするとアクションバーが非表示になります。

参考URL

R.drawableのアイコンのAPIレベルは公式でご確認下さい。





関連記事



公開日:2018年05月19日
記事NO:02657