Панель инструментов appcompat showAsAction не работает должным образом

Мое устройство позволяет отображать до 3 значков на панели задач. Если я превышу это число, все значки будут скрыты, даже если у меня есть showAsAction="always" или showAsAction="ifRoom".

Это мой код:

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<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">
    <group android:id="@+id/groupActions">
        <item
            android:id="@+id/action_admin"
            android:orderInCategory="0"
            android:title="@string/buttonAdmin"
            app:showAsAction="always" />

        <item
            android:id="@+id/action_readMode"
            android:orderInCategory="1"
            android:title="@string/buttonReadModeOn"
            android:icon="@drawable/ic_read_mode_24dp"
            app:showAsAction="always" />
    </group>

    <group android:id="@+id/groupActions">
        <item
            android:id="@+id/action_schedule"
            android:orderInCategory="2"
            android:title="@string/buttonSchedule"
            android:icon="@drawable/ic_today_24dp"
            app:showAsAction="ifRoom" />

        <item
            android:id="@+id/action_report"
            android:orderInCategory="3"
            android:title="@string/buttonReport"
            android:icon="@drawable/ic_list_check_24dp"
            app:showAsAction="ifRoom" />

        <item
            android:id="@+id/action_logout"
            android:orderInCategory="4"
            android:title="@string/buttonLogout"
            app:showAsAction="never" />
    </group>

    <group android:id="@+id/groupInfo">
        <item
            android:id="@+id/action_help"
            android:orderInCategory="5"
            android:title="@string/buttonHelp"
            android:visible="false"
            app:showAsAction="never" />

        <item
            android:id="@+id/action_contact"
            android:orderInCategory="6"
            android:title="@string/buttonContact"
            app:showAsAction="never" />

        <item
            android:id="@+id/action_about"
            android:orderInCategory="7"
            android:title="@string/buttonAbout"
            app:showAsAction="never" />
    </group>
</menu>

Вот код MyActivity:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu, menu);
    MenuCompat.setGroupDividerEnabled(menu, true);
    this.menu = menu;
    MenuItem item = menu.findItem(R.id.action_readMode);
    if (item != null) {
        tintReaderModeIcon(item);
    }
    return super.onCreateOptionsMenu(menu);
}

Моя идея состоит в том, чтобы показать два значка с showAsAction="always" и значок с showAsAction = "ifRoom" с наивысшим приоритетом.

Это желаемый результат:

И вот что я получаю:

Пожалуйста, помогите разобраться в этом.

РЕДАКТИРОВАТЬ: Благодаря ответу Denis95 мне удалось решить половину проблемы. Теперь значки с showAsAction="true" отображаются правильно.

1 ответ

Решение

Как я вижу из файла ресурсов, вы группируете 5 элементов вместе. Постарайтесь разместить элементы, которые вы хотите всегда показывать, на панели приложений за пределами этой группы. Это должно сработать.

Другие вопросы по тегам