Вы можете создать проверяемый пункт меню, установив actionViewClass
для проверяемого виджета, например android.widget.CheckBox
Рез / меню / menu_with_checkable_menu_item.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_favorite"
android:checkable="true"
android:title="@string/action_favorite"
app:actionViewClass="android.widget.CheckBox"
app:showAsAction="ifRoom|withText" />
</menu>
И вы даже можете присвоить ей стиль звезды, которую можно проверить, если для actionLayout
задать макет со стилем android.widget.CheckBox
Рез / расположение
/action_layout_styled_checkbox.xml
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/starStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Рез / меню / menu_with_checkable_star_menu_item.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_favorites"
android:checkable="true"
android:title="@string/action_favorites"
app:actionLayout="@layout/action_layout_styled_checkbox"
app:showAsAction="ifRoom|withText" />
</menu>
Для установки значения
menuItem.setChecked(true/false);
Чтобы получить значение
menuItem.isChecked()
Приведение Пункта Меню к CheckBox
CheckBox checkBox= (CheckBox) menuItem.getActionView();