Mengganti ShowAsAction Pada item di OptionMenu dalam Action Bar android

Diketahui:

isi dari File menu_main.xml

<menu xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
><item
android:id=”@+id/action_dua”
android:orderInCategory=”97″
android:title=”2 NUMBERS”
app:showAsAction=”never” />
<item
android:id=”@+id/action_tiga”
android:orderInCategory=”98″
android:title=”3 NUMBERS”
app:showAsAction=”ifRoom” /></menu>

Contoh Kasus:

Saat aplikasi dijalankan berdasarkan kode file xml diatas maka default item menu yang ditampilkan adalah “3 NUMBERS” seperti terlihat pada gambar dibawah ini:

201702051150optMenu

Keinginan:

Ketika saya menekan menu “3 NUMBERS” maka saya ingin agar properties ShowAsAction dari menu ini dirubah menjadi “Never” lalu menu “2 NUMBERS” ditampilkan seperti terlihat pada gambar dibawah ini:

201702051151optMenu

Pertanyaan:

Bagaimana cara melakukannya… ?

Jawaban:

Metode onOptionsItemSelected(MenuItem item)

if (id == R.id.action_tiga) {

status = “tiga”;

invalidateOptionsMenu();

}else if(id==R.id.action_dua){

status = “dua”;

invalidateOptionsMenu();

}

Keterangan:

  • status diatas adalah sebuah variabel String
  • invalidateOptionsMenu(), kode ini akan menyebabkan OptionMenu akan merefresh dan metode onPrepareOptionsMenu() akan dijalankan kembali, oleh karena itu maka kita akan merubah properties ShowAsAction pada metode ini.

 

Metode onPrepareOptionsMenu(Menu menu)

MenuItem dua = menu.findItem(R.id.action_dua);
MenuItem tiga = menu.findItem(R.id.action_tiga);

if(status.equals(“tiga”)){

tiga.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
dua.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

}else{

tiga.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
dua.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

}

Keterangan:

  • setShowAsAction() adalah sebuah metode yang digunakan untuk mengatur penampilan dari sebuah item menu.

Penutup

Sekian dan terima kasih.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *