Подтвердить что ты не робот

Панель действий, не показывающая иконки действий

Я использую новую поддержку Action Bar, и все мои действия отображаются в режиме переполнения, а не как значки в панели. Мое приложение предназначено для 7+ API.

HomeActivity:

public class HomeActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle(R.string.app_name);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
    }

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

home.xml

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
<item
    android:id="@+id/action_browse"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/title_activity_browse"/>
<item
    android:id="@+id/action_search"
    android:actionViewClass="android.widget.SearchView"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="ifRoom|collapseActionView"
    android:title="@string/text_search"/>
<item
    android:id="@+id/action_scan"
    android:icon="@drawable/action_scan"
    android:showAsAction="always"
    android:title="@string/title_activity_browse"/>

Я развертываю Nexus 7 с 4.3 и на LGP500 с 2.3.3 и без значков. Я также добавил android: theme = "@style/Theme.AppCompat.Light.DarkActionBar" в манифесте, и мой проект правильно ссылается на android-support-v7-appcompat, как описано в официальном документе.

4b9b3361

Ответ 1

вы должны определить свои файлы ресурсов menu, а также атрибуты для библиотеки поддержки.

Чтобы внедрить обратную поддержку, она считывает их вместо тех, которые определены в старой версии Android.

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

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    yourapp:showAsAction="never"
    android:title="@string/action_settings"/>
<item
    android:id="@+id/action_browse"
    android:orderInCategory="100"
    android:showAsAction="never"
    yourapp:showAsAction="never"
    android:title="@string/title_activity_browse"/>
<item
    android:id="@+id/action_search"
    android:actionViewClass="android.support.v7.widget.SearchView"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="ifRoom|collapseActionView"
    yourapp:showAsAction="ifRoom|collapseActionView"
    yourapp:actionViewClass="android.support.v7.widget.SearchView"
    android:title="@string/text_search"/>
<item
    android:id="@+id/action_scan"
    android:icon="@drawable/action_scan"
    android:showAsAction="always"
    yourapp:showAsAction="always"
    android:title="@string/title_activity_browse"/>

</menu>

NB помните, что для изменился класс SearchView. он теперь использовал один из библиотеки поддержки, поэтому вам также нужно обновить свой код в onCreateOptionsMenu()

EDIT: здесь - довольно хорошее руководство по переносу из ActionBarSherlok в AppCompat

Ответ 2

Общей ошибкой является включение строки заголовка в файл string.xml. Убедитесь, что вы включили его для каждого пункта меню.

Предположим, что наше меню xml содержит следующий элемент:

    <item
    android:id="@+id/toggle_action"
    android:orderInCategory="1"
    android:showAsAction="ifRoom"
    android:title="@string/toggle_action"/>

Если мы забудем включить значение для строки toggle_action, тогда значок панели действий не будет отображаться.

Перейдите в файл strings.xml и добавьте следующее:

    <string name="toggle_action">TOGGLE</string>