Кнопки действий не отображаются на панели действий?

Я следую инструкциям на http://developer.android.com/ и пытаюсь добавить элементы на панель действий.

Хотя я добавил весь код, действие поиска отображается как элемент переполнения вместо элемента кнопки действия. Я пробовал на 4"и 7" виртуальных устройствах с опцией мягкой клавиатуры.

Здесь

main_activity_actions.xml
<?xml version="1.0" encoding="utf-8"?>
<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>

Здесь MainActivity.java "s onCreateOptionsMenu метод.

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

Я хочу узнать, что вызывает эту проблему.

2 ответа

Решение

Это связано с тем, что если вы используете библиотеку AppCompat ActionBar поддержки и ActionBarActivity, вам следует создавать меню, отличные от стандартного способа создания меню xml в ActioBarSherlock или 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_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          app:showAsAction="always"  />
      <item android:id="@+id/action_compose"
          android:icon="@drawable/ic_action_compose"
          android:title="@string/action_compose" 
          app:showAsAction="always"/>
</menu>

Несмотря на то, что проблема решена, позвольте мне опубликовать ответ с более подробной информацией, которая может оказаться полезной любому позже.

Теперь проблема в том, что вы использовали android:showAsAction="ifRoom" а также android:showAsAction="never"вместо этого, если вы хотите, чтобы кнопка действия всегда была видна, используйте android:showAsAction="always"

К вашему сведению, Android:showAsAction может принимать любое из следующих значений:

android:showAsAction = ["ifRoom" | "Никогда" | "withText" | "всегда" | "CollapseActionView"]

введите описание изображения здесь

Вы можете прочитать больше о Ресурсе Меню

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