<< Android-Note
メニューアイテムを隠す
アクションバーに表示されるメニューアイテムをボタンを押したときなどの特定のタイミングで隠す方法を紹介します。
まず、次のようなメニューレイアウトを作ります。
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_setting"
android:title="@string/setting_str"
android:icon="@drawable/setting"
android:showAsAction="always" /gt;
</menu>
このアイテムを1つだけ持つメニューレイアウトをアクションバーに設定し、アイテムの表示・非表示を切り替えられるボタンを作ります。
public class MainActivity extends Activity { public Menu menu; //メニューを保存する変数 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onStart() { super.onStart(); Button menu_show_btn = (Button)findViewById(R.id.show_button); Button menu_hide_btn = (Button)findViewById(R.id.hide_button); menu_show_btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { menu.getItem(0).setVisible(true); //メニューを表示 } }); menu_hide_btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { menu.getItem(0).setVisible(false); //メニューを非表示 } }); } //メニューの作成 public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); this.menu = menu; return super.onCreateOptionsMenu(menu); } }
メニューを取得するメソッドは用意されていないのでonCreateOptionsMenu内で作成されたメニューを
public Menu menu;
などとしてグローバルな変数に保存します。
アイテムを非表示にしているのが次のコードです。
menu.getItem(0).setVisible(false);
保存したメニューから0番目のアイテムを取得し、そのアイテムをsetVisivilityメソッドで非表示にするだけです。
上の例ではonStartメソッド内でメニューアイテムを隠すボタンと表示するボタンの2つを用意し、アイテムの表示を切り替えられるようにしています。
上の画像のように非表示ボタンを押すと歯車マークのアイテムが隠れます。
また、表示ボタンを押すとそのアイテムが元通りに表示されます。
© Kaz