Показать пункт меню всегда в панели действий поддержки

enter image description here Я работаю над приложением для Android. Я реализовал в нем поддерживаемую панель действий. Я хочу всегда показывать пункт меню опций. Но это не видно. он отображается в выпадающем меню. мой код для пункта меню, приведенного ниже.

<item
    android:id="@+id/action_settings"
    android:icon="@drawable/add_post"
    android:title="@string/action_settings"

    />

И код действия ActionBar приведен ниже: -

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

любая помощь будет оценена.

Ответ 1

Из docs вы должны добавить атрибут showAsAction в always или ifRoom

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" />
</menu>

Ответ 2

Если вы используете AppCompat ActionBar, вы должны изменить свой макет таким образом:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/add_post"
        android:title="@string/action_settings"
        app:showAsAction="always" />
</menu>  

showAsAction атрибут будет работать только с пользовательским префиксом, см. документацию. В соответствии с этим:

Обратите внимание, что вышеприведенный атрибут showAsAction использует собственное пространство имен, определенное в теге. Это необходимо при использовании любых атрибутов XML, определенных библиотекой поддержки, поскольку эти атрибуты не существуют в платформе Android на старых устройствах.

Надеюсь, что это поможет.

Ответ 3

Вы можете использовать различные значения свойства android:showAsAction в файле xml меню Android.

чтобы отобразить все видимое время на панели действий, вы должны пойти с android:showAsAction="always"..

Вы также можете использовать android:showAsAction="ifRoom", но он будет показывать меню в панели действий не всегда, но он будет отображаться в соответствии с другим размером экрана.

Edited

Ссылка: Элементы меню не отображаются на панели действий

Попробуйте с приведенным ниже кодом, затем..

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item
        android:id="@+id/menu_lang"
        app:showAsAction="always" <!-- app:showAsAction="ifRoom" -->
        android:title="@string/menu_lang"
        android:icon="@android:drawable/ic_input_lang"/>
</menu>

Надеюсь, это поможет вам..!!!

Ответ 4

удалите эту строку xmlns:app="http://schemas.android.com/apk/res-auto"

используйте android:showAsAction="always" вместо app:showAsAction="always"

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_refresh"
    android:icon="@drawable/ic_refresh"
    android:showAsAction="ifRoom"
    android:title="@string/action_refresh"/>

<item
    android:id="@+id/action_filter"
    android:icon="@drawable/ic_filter"
    android:showAsAction="always"
    android:title="@string/action_filter"/>
</menu>

Ответ 5

Я понимаю, что этот вопрос составляет 2+ года, но для полноты, если вы хотите установить это в коде, используйте следующее:

menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

другие параметры

MenuItem.SHOW_AS_ACTION_NEVER
MenuItem.SHOW_AS_ACTION_IF_ROOM
MenuItem.SHOW_AS_ACTION_ALWAYS
MenuItem.SHOW_AS_ACTION_WITH_TEXT
MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW