Панель действий не отображается с AppCompat

Я перенесу свое приложение в API7 с помощью AppCompat и у меня возникла проблема с панелью действий.

Когда я использую FragmentActivity панель действий отображается на моем телефоне (API18), но с ActionBarActivity он отображается как опциональное меню при нажатии кнопки меню.

В эмуляторе с API7 панель действий всегда отображается в виде меню опций.

Есть идеи?

3 ответа

Решение

Используйте пространство имен compat для таких пунктов меню, как это:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:compat="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_whatever"
      android:icon="@drawable/ic_action_whatever"
      android:title="@string/whatever"
      compat:showAsAction="ifRoom"  />
</menu>

В связи с дубликатом, указывающим на этот пост, у меня возникли проблемы с отображением кнопок в качестве элементов действия вместо элементов переполнения, несмотря на то, что для showAsAction было установлено значение always, Мне удалось заставить его расширить свою деятельность с Activity вместо ActionBarActivity, Согласно этому ответу, это приемлемо, если вам не нужно поддерживать уровни API ниже 11.

...extends ActionBarActivity:

расширяет ActionBarActivity

...extends Activity:

Я отлаживаю с помощью Doogee Valencia Y100Pro, и меню "три маленьких квадрата" не отображается, но когда я расширил свою MainActivity с android.support.v7.app.ActionBarActivity, затем я получаю текст / значок меню в панели действий. Следующий скриншот и 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">
    <item
        android:id="@+id/action_update"
        android:icon="@drawable/ic_refresh"
        android:title="@string/action_update"
        app:showAsAction="always"/>
    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        app:showAsAction="ifRoom"/>
</menu>
Другие вопросы по тегам