Menü Grubu Oluşturmak
Menü grubu ifadesi, belirli davranışları paylaşan menü itemlerinden oluşan grupları ifade eder. Gruop ile ;
- setGroupVisible() metoduyla tüm itemleri Show(göster) veya Hide(gizle) edebilirsiniz.
- setGroupEnabled() metoduyla tüm itemleri aktif veya pasif edebilirsiniz.
- setGroupCheckable() metoduyla tüm itemlerin seçilip seçilmeyeceğine karar verebilirsiniz.
Gruplama işlemini menu resource içinde <item> elementi altında <group> etiketi altında veya add() metodu ile grup ID tanımlayarak kodlayabilirsiniz.
Aşağıda menü grubu içeren menu resource örneğini görebilirsiniz.
Örnek:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never"/>
<item android:id="@+id/menu_save"
android:icon="@drawable/menu_save"
android:title="@string/menu_save" />
<!-- menu group -->
<group android:id="@+id/group_delete">
<item android:id="@+id/menu_archive"
android:title="@string/menu_archive" />
<item android:id="@+id/menu_delete"
android:title="@string/menu_delete" />
</group>
</menu>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never"/>
<item android:id="@+id/menu_save"
android:icon="@drawable/menu_save"
android:title="@string/menu_save" />
<!-- menu group -->
<group android:id="@+id/group_delete">
<item android:id="@+id/menu_archive"
android:title="@string/menu_archive" />
<item android:id="@+id/menu_delete"
android:title="@string/menu_delete" />
</group>
</menu>
Grup içindeki itemler, ilk iteml ile aynı düzeyde görünecektir.(Menü'deki tüm bu üç item özdeşlerdir. Tabii ki, yukarıda bahsedilen metotlar yardımıyla group ID vererek grup içindeki iki itemin davranışlarını değiştirebilirsiniz.) Sistem gruplamış olduğunuz itemleri asla ayırmayacaktır. örnek olarak; her itemi android:showAsAction="ifRoom" ile tanımlarsanız, bu itemler ya action bar'da ya da action overflow'da görünecektir.
Checkable Menü İtemlerini kullanmak
On/Off gibi iki seçeneğe sahip menü tasarımlarında kullanabileceğiniz kullanışı bir yetenektir. Aşağıdaki şekilde örnek bir gösterim yer almaktadır.
android:checkAbleBehaviour niteliği aşağıdaki özellikleri taşıyabilir.
- single Grup içindeki sadece bir itemin seçilebilir olmasını istediğimizde,
- all Tüm itemlerin seçilebilir olmasını istediğimizde,
- none Hiç bir iteme bu özelliği vermek istemediğimizde.
android:checked niteliğini kullanarak varsayılan olarak seçili gelmesini istediğiniz itemleri <item> elementi içinde belirleyip ardından kod satırında setChecked() bu metod içinde de işlemleri yapabilirsiniz.
Seçilebilir item tıklandığında, sistem onOptionsItemSelected() metodu gibi sırasıyla tanımlamış olduğunuz geri dönüş metotlarını çağırır. Bu alanlarda checkbox durumunu ayarlamanız gerekir, çünkü checkbox veya radio butonlar durumlarını otomatik olarak değiştirmezler. Yani sizin XML'de yapmış olduğunuz tanım java dosyasında da tanımlanmalı ve Selected şeklinde belirtilmelidir. İtemlerin mevcut durumlarını, isChecked() metodu ile kontrol edebilir, setChecked() metoduyla da seçili duruma getirebilirsiniz.
Örnek:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_archive:
case R.id.menu_delete:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Bu şekilde seçili durumu ayarlamazsanız, itemin görünür durumu kullanıcı bu itemi seçtiğinde değişmeyecektir.(checkbox veya radio button). View'in durumunu ayarlarsanız, kullanıcı ayarlamaları yapıp, daha sonra geldiğinde de görünür kıldığınız bu seçimler kullanıcının karşısına gelecektir.
NOT: Checkable Menü itemleri oturum baslı ve app destroy edildiğinde kayedilmeyen işlemlere yöneliktir. Kullanıcı için ayarları kaydetmek istediğiniz durumda, SharedPreferences kullanarak verileri kayıt etmelisiniz. Bu konuya ileride değineceğiz.
Soru Ve Görüşleriniz için : AndroidVeJava