ホーム > カテゴリ > 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


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律