2013-11-29 6 views
1

Я использую поддержку android-support-v7-appcompat для обратной совместимости, так как я хочу использовать ActionBar в своем приложении. Я добавил меню в свое.меню переполнения, отображаемое как контекстное меню в android appcompat

Вот мой menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:DetailsPage="http://schemas.android.com/apk/res-auto" > 

    <!-- <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings"/> --> 
    <item 
     android:id="@+id/menu_item_search" 
     DetailsPage:actionViewClass="android.support.v7.widget.SearchView" 
     DetailsPage:showAsAction="always" 
     android:icon="@drawable/abc_ic_search" 
     android:title="Search Products"> 
    </item> 
    <item 
     android:id="@+id/root_menu" 
     DetailsPage:showAsAction="always" 
     android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_light" 
     android:title="More"> 
     <menu> 
      <item 
       android:id="@+id/menu_Home" 
       DetailsPage:showAsAction="ifRoom|withText" 
       android:icon="@drawable/abc_ic_search" 
       android:showAsAction="ifRoom|withText" 
       android:title="Home"/> 
      <item 
       android:id="@+id/menu_favourite" 
       DetailsPage:showAsAction="ifRoom|withText" 
       android:icon="@drawable/abc_ic_search" 
       android:showAsAction="ifRoom|withText" 
       android:title="favourite"/> 
      <item 
       android:id="@+id/menu_Balance" 
       DetailsPage:showAsAction="ifRoom|withText" 
       android:icon="@drawable/abc_ic_search" 
       android:showAsAction="ifRoom|withText" 
       android:title="Balance"/> 
      <item 
       android:id="@+id/menu_logout" 
       android:icon="@drawable/abc_ic_search" 
       DetailsPage:showAsAction="ifRoom|withText" 
       android:showAsAction="ifRoom|withText" 
       android:title="Logout"/> 
     </menu> 
    </item> 

</menu> 

В моей деятельности, я есть расширяет свою деятельность с ActionBarActivity и

Вот мой onCreateOptionsMenu ::

public boolean onCreateOptionsMenu(Menu menu) 
{ 
getMenuInflater().inflate(R.menu.menu, menu); 
} 

В настоящее время по щелчку меню элемент показан следующим образом:

enter image description here

Здесь меню отображается в 2.3.3, но в качестве контекстного меню, которое я не хочу.

Что я хочу есть (Захваченные в 4.2.2)

enter image description here

Код, написанный выше работает отлично и дает мне желаемого результата, а также я могу установить изображение Alongwith пункта меню, но если Я запускаю тот же код в 2.3, тот же код дает мне меню в качестве контекстного меню.

так что я не хватает? Какие изменения мне нужно сделать, чтобы достичь желаемого результата в 2.3, который я получаю в 3.0 +?

Надежда мой вопрос ясно ...

любой помощи/ссылок будет оценен ....

Заранее спасибо ....

EDIT :: (после применения ответа CommonsWare в)

модифицированный menu.xml (я надеюсь, что я правильно понимаю)

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:DetailsPage="http://schemas.android.com/apk/res-auto" > 

    <item 
     android:id="@+id/menu_item_search" 
     DetailsPage:actionViewClass="android.support.v7.widget.SearchView" 
     DetailsPage:showAsAction="never" 
     android:icon="@drawable/abc_ic_search" 
     android:title="Search Products"> 
    </item> 
    <item 
     android:id="@+id/menu_Home" 
     DetailsPage:showAsAction="never" 
     android:icon="@drawable/abc_ic_search" 
     android:showAsAction="ifRoom|withText" 
     android:title="Home"/> 
    <item 
     android:id="@+id/menu_favourite" 
     DetailsPage:showAsAction="never" 
     android:icon="@drawable/abc_ic_search" 
     android:showAsAction="ifRoom|withText" 
     android:title="favourite"/> 
    <item 
     android:id="@+id/menu_Balance" 
     DetailsPage:showAsAction="never" 
     android:icon="@drawable/abc_ic_search" 
     android:showAsAction="ifRoom|withText" 
     android:title="Balance"/> 
    <item 
     android:id="@+id/menu_logout" 
     DetailsPage:showAsAction="never" 
     android:icon="@drawable/abc_ic_search" 
     android:showAsAction="ifRoom|withText" 
     android:title="Logout"/> 

</menu> 

Выход ::

enter image description here

ответ

1

У меня был один подобный вопрос, и как я ее решил, было использование пользовательских имен, например:

<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:title="@string/settings" 
     app:showAsAction="ifRoom|withText" /> 
    <item 
     android:id="@+id/action_logout" 
     android:title="@string/logout" 
     app:showAsAction="always|withText" /> 
</menu> 

Однако я не знаю, если это решение или обходной путь.

+0

Спасибо за быстрый ответ. У меня alreday добавлено мое собственное пространство имен в файле xml. Так что я думаю, что это не проблема. – AndroidLearner

+0

Да, вы правы ... Я ворвался в ответ. Я извиняюсь. –

+0

Это не обходной путь, см. [Документация] (http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems) специально ** Использование атрибутов XML из части библиотеки поддержки **. – Fllo

0

Шаг 1: Удалите <item> значок которого "@drawable/abc_ic_menu_moreoverflow_normal_holo_light

Шаг 2: Перемещение <item> элементы, которые были в подменю указанного выше пункта меню в главном <menu> элемента

Шаг # 3 : Для тех, кто хочет всегда появляться в переполнении, используйте DetailsPage:showAsAction="never"

И все готово.

Переполнение не является подменю. Переполнение является частью регулярной панели действий, поэтому ваше подменю мешает вашему результату.

+0

Спасибо за быстрый ответ. Я применил вашу логику к моему текущему коду и не дал мне требуемого выхода. Надеюсь, я правильно понял вашу логику. Пожалуйста, исправьте меня, если я ошибаюсь. Пожалуйста, проверьте мои изменения .. – AndroidLearner

+0

@ AndroidLearner: То, что у вас есть, является правильным. У вашего устройства или эмулятора есть кнопка MENU, и в этом случае нажатие кнопки MENU приведет к появлению переполнения в нижней части экрана. '...' предназначен только для устройств, у которых нет кнопки меню заставки, например, большинства планшетов. – CommonsWare

+0

так есть ли обходной путь для достижения моего требования? В 2.3, если я использую старый макет (menu.xml) и по щелчку которого я показываю меню, как я хочу? Но это также должно работать на 3.0 +. Итак, любое решение для достижения этого? – AndroidLearner

Смежные вопросы