Действия переполнения на ActionBar не отображаются

У меня есть ActionBar, использующий ActionBar Sherlock, где он мне нужен для отображения переполнения, потому что у меня больше действий, чем места. Но он не показывает значок переполнения. Вот моя конфигурация:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
      android:icon="@drawable/action_search"
      android:title="@string/menu_search"
      android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_library"
      android:icon="@drawable/hardware_headphones"
      android:title="@string/my_music"
      android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_downloads"
      android:icon="@drawable/av_download"
      android:title="@string/downloads"
      android:showAsAction="ifRoom|withText"/>
</menu>

А вот код для его настройки:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getSupportMenuInflater();
    menuInflater.inflate(R.menu.shopping_menu, menu);
    MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
    searchMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            startActivity(new Intent(ShopActivity.this, SearchDialog.class));
            return false;
        }
    });
    MenuItem downloadMenuItem = menu.findItem(R.id.menu_downloads);
    downloadMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            startActivity( new Intent(ShopActivity.this, DownloadQueueActivity.class) );
            return false;
        }
    });
    MenuItem myMusicItem = menu.findItem(R.id.menu_library);
    myMusicItem.setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            startActivity(new Intent(ShopActivity.this, MyMusicActivity.class));
            return false;
        }
    });

    return true;
}

Я просматривал демонстрации в ActionBar Sherlock, но я не могу сказать, что они делают иначе, чтобы получить переполнение, чем то, что я делаю. Так что же здесь происходит, почему его не показывают?

 user152153614 июл. 2012 г., 08:13
ВотActionBar, Это то же самое, что комментарий Тома, но это из официальной документации Android.
 t0mm13b14 июл. 2012 г., 03:53
Если у вас есть физическая клавиша меню, индикатор переполнения не отображается. Это поведение по замыслу. Увидетьhere для получения более подробной информации по другому вопросу.
 chubbsondubs14 июл. 2012 г., 05:22
Оставьте это в ответе, и я начислю вам баллы. Спасибо

Ответы на вопрос(3)

Решение Вопроса

индикатор переполнения не отображается. Это поведение по замыслу. УвидетьВот для получения более подробной информации по другому вопросу.

 chubbsondubs14 июл. 2012 г., 18:54
Другая сторона этого ответа заключается в добавлении этого атрибута к вашей активности: android: theme = & quot; @ style / Theme.Sherlock.ForceOverflow & quot; и он поместит действия в панели действий, которые не соответствуют значку переполнения, для доступа к нему в виде раскрывающегося списка. В целом, я думаю, что это дизайнерское решение о размещении нежелательной кнопки меню глупо, потому что Google пытается переместить людей на ActionBar, потому что по их собственному признанию и исследованию никто не знает о кнопке меню. Так почему переполнение там по умолчанию ?! "О, я понял. Давай положим его туда, куда никто не идет. Ну, не все, что делает Google, может быть блестящим.

я думаю, здесь есть два вопроса. Во-первых, как утверждает t0mm13b, если на устройстве имеется физическая клавиша меню, индикатор переполнения НЕ отображается. Это по замыслу. Хотя, по моему опыту, это не относится к каждому устройству (к сожалению ...)

Вторая проблема заключается в том, что, если вы хотите принудительно переполнить элемент, вам нужно установить для showAsAction значение "never". В противном случае единственными элементами, которые появляются в переполнении, являются элементы, которые просто «не подходят». в панели действий. И учитывая, что у вас есть 3 элемента, которые вы хотите отобразить вместе с текстом ... вы гарантированно должны иметь хотя бы один элемент переполнения и, следовательно, значок переполнения (с оговоркой первого абзаца)

android:showAsAction тег кapp:showAsAction в соответствии с руководством по Android вmenu_main.xml файл, как показано ниже

Добавьте эту строку, если ее нет

menu xmlns:app="http://schemas.android.com/apk/res-auto"

    <item android:id="@+id/action_search"
        android:icon="@drawable/search_icon"
        android:title="@string/action_search"
        app:showAsAction="always"/> <!--change here android: to app:-->

    <item android:id="@+id/action_location"
        android:icon="@drawable/location_icon"
        android:title="@string/action_locate"
        app:showAsAction="always"/>
</menu>

Ваш ответ на вопрос