Вот как я это сделал.
Добавьте следующий код в вашу деятельность, где реализовано меню опций.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//your checking other stuff
item.setChecked(!item.isChecked());
//main part for holding onto the menu
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
item.setActionView(new View(this));
item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return false;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return false;
}
});
return false;
}
Добавив строку: item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
Я отмечаю элемент, так как он обладает способностью к развертыванию / складыванию, поэтому он будет вызывать setOnActionExpandListener
.
Эта строка здесь: item.setActionView(new View(this));
- это вид, когда элемент находится в развернутом состоянии. Это просто фиктивный вид, потому что мы никогда не позволим ему развернуть, как я собираюсь объяснить далее.
Вы видите, что я возвращаю false из обоих методов setOnActionExpandListener
, чтобы подавить расширение и свертывание элемента, поэтому представление, которое мы дали в предыдущем шаге, никогда не будет отображаться, и меню останется открытым.
Ниже будет ваш файл меню:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:checkableBehavior="all">
<item
android:id="@+id/action_check"
android:orderInCategory="1"
android:title="Title 1"
app:showAsAction="never" />
<item
android:id="@+id/notification"
android:orderInCategory="2"
android:title="Title 2"
app:showAsAction="never" />
<item
android:id="@+id/about"
android:orderInCategory="3"
android:title="Title 3"
app:showAsAction="never" />
</group>
</menu>
Обратите внимание на строку group android:checkableBehavior="all"
, которая говорит о том, что все элементы в группе будут иметь проверяемое поведение, так что вам не придется писать проверяемые в каждом элементе.