アクションバー(オプションメニュー)とコンテキストメニュー [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の
を
にするとアクションバーが非表示になります。
参考URL
R.drawableのアイコンのAPIレベルは公式でご確認下さい。