0
我有一個搜索功能的食譜,我想包括搜索過濾器的不同過敏或飲食。我已經將此作爲頁面上的操作欄上的一個選項。然而,每當我點擊一個複選框,菜單消失,我不得不再次點擊橙色圖標彈出菜單,然後點擊另一個選項。有沒有一種方法可以讓菜單保持打開狀態,以便我可以檢查多個過濾器,而不必每次都關閉菜單?使ActionBar上的菜單保持打開當我點擊一個項目
這是我的過濾器部分的圖片。
checkable_test.xml
<item android:id="@+id/action"
android:title="@string/action_example"
android:icon="@drawable/filter"
app:showAsAction="withText|ifRoom">
<menu>
<item android:title="Allergies">
<menu>
<group android:id="@+id/allergies"
android:checkableBehavior="all">
<item android:id="@+id/no_peanut"
android:icon="@drawable/no_peanut"
android:title="No Peanuts"
android:checkable="true"/>
<item android:id="@+id/no_sesame"
android:icon="@drawable/no_sesame"
android:title="No Sesame"
android:checkable="true"/>
<item android:id="@+id/no_dairy"
android:title="No Dairy"
android:icon="@drawable/no_milk"
android:checkable="true"/>
<item android:id="@+id/gluten_free"
android:icon="@drawable/gluten_free"
android:title="No Gluten"
android:checkable="true"/>
<item android:id="@+id/no_egg"
android:icon="@drawable/no_eggs"
android:title="No Egg"
android:checkable="true"/>
<item android:id="@+id/no_soy"
android:icon="@drawable/no_soy"
android:title="No Soy"
android:checkable="true"/>
<item android:id="@+id/no_seafood"
android:icon="@drawable/no_crust"
android:title="No Seafood"
android:checkable="true"/>
</group>
</menu>
</item>
Search.java
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.checkable_test, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.no_peanut:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.no_dairy:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.no_egg:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.no_seafood:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.no_sesame:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.no_soy:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.gluten_free:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
有什麼解決方法嗎?
嘿Theman,你有沒有找到一個答案? –