Как удерживать меню переполнения после того, как я нажму на него?
Я добавил несколько флажков в меню переполнения. Я хочу, чтобы мое меню переполнения удерживалось, а не исчезало после того, как я установил флажок в меню переполнения. Как я могу это сделать? Спасибо за помощь.
Это мой XML-файл меню.
<item
android:id="@+id/action_check"
android:title="@string/action_check"
android:orderInCategory="1"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/notification"
android:orderInCategory="2"
android:title="@string/notification"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/about"
android:orderInCategory="3"
android:title="@string/about"
app:showAsAction="never"></item>
2 ответа
Вот как я это сделал.
Добавьте следующий код в вашу деятельность, где реализовано меню опций.
@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));
Это вид, когда элемент находится в расширенном состоянии. Это просто фиктивный вид, потому что мы никогда не позволим ему раскрыть то, что я собираюсь объяснить дальше.
Вы видите, что я возвращаю ложный из обоих методов 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"
означает, что все элементы в группе будут иметь проверяемое поведение, чтобы вам не приходилось писать проверяемые в каждом элементе.
Группа представляет собой набор пунктов меню, которые имеют определенные черты, для получения дополнительной информации см.
<group android:id="@+id/group>
<item
android:id="@+id/action_check"
android:title="@string/follow"
android:orderInCategory="1"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/notification"
android:orderInCategory="2"
android:title="@string/notification"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/about"
android:orderInCategory="3"
android:title="@string/about_us"
app:showAsAction="never"/>
</group>