2013-04-26 4 views
2

У меня проблема, когда я пытаюсь установить один пункт в моем ActionBar как всегда видны и более 4 иконки как выпадающие пункты со следующей планировкой:ActionBarSherlock collapseActionView

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

    <item 
     android:id="@+id/search_movies" 
     android:icon="@drawable/action_search" 
     android:showAsAction="always" 
     android:title="Search"/> 
    <item 
     android:id="@+id/movies" 
     android:icon="@drawable/action_video" 
     android:showAsAction="collapseActionView" 
     android:title="Movies"/> 
    <item 
     android:id="@+id/theaters" 
     android:icon="@drawable/action_location_map" 
     android:showAsAction="collapseActionView" 
     android:title="Theaters"/> 
    <item 
     android:id="@+id/preferences" 
     android:icon="@drawable/action_settings" 
     android:showAsAction="collapseActionView" 
     android:title="Preferences"/> 
    <item 
     android:id="@+id/contact" 
     android:icon="@drawable/action_about" 
     android:showAsAction="collapseActionView" 
     android:title="Contact"/> 

    </menu> 

В результате только первый пункт показывая, а остальные не видны, даже не как выпадающее меню. Это использование ActionBarSherlock и 2.3 Android-устройства.

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

enter image description here

EDIT:

Проблема у меня было, потому что, когда вы используете ActionBar с микросхемой устройство с аппаратной кнопкой «меню», выпадающее меню с 3 точками не отображается, 4 других элемента отображаются только при нажатии кнопки меню. Кто-нибудь знает, можно ли изменить это поведение?

ответ

1

Хммм, может быть, я неправильно понял, но если вы хотите разместить эти оставшиеся четыре элемента в меню действий переполнения (значок с тремя точками), то использовать android:showAsAction="never" вместо "collapseActionView" следует сделать это.

... Пробовал пару способов, но это сделал трюк: Force overflow menu in ABS

+0

Следуя вашим рекомендациям, я получаю тот же результат, только один значок виден и значок 3-точки не отображается. – BigBen3216

+0

Является самой первой строкой внутри 'onCreateOptionsMenu (меню меню)' для этой Acivity 'getSupportMenuInflater(). Inflate (R.menu.yourMenuLayout, menu);'? – es0329

+0

Да, у меня есть эта строка, на самом деле она правильно читает файл menu.xml, вы можете видеть в моем редактировании, что проблема присутствует только в устройствах с аппаратной кнопкой «меню», когда вы нажимаете на эту кнопку, появляются элементы но значок с тремя точками не отображается. – BigBen3216

1

Я встретил ту же проблему, и мое решение довольно просто. (Я не использовал HoloEverywhere.)

Идея взята из образца образца ABS, выпадающее меню которого может быть отображено на устройствах до 4.0, а также с помощью подменю. Итак, моя идея заключается в использовании подменю для маскировки значка с тремя точками. Вот код:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    SubMenu sub = menu.addSubMenu("More"); 
    sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    sub.getItem().setIcon(R.drawable.ic_menu); 

    getSupportMenuInflater().inflate(R.menu.activity_main, sub); 

    return true; 
} 

Поскольку меню «Дополнительно» не имеет атрибут MenuItem.SHOW_AS_ACTION_WITH_TEXT, так что слово «больше» (или что вы назвали) на самом деле не будет отображаться на панели действий. Единственный отображаемый значок R.drawable.ic_menu может быть скопирован из папок исходного кода ABS/drawable-xxdpi с именем «abs__ic_menu_moreoverflow_normal_holo_dark.png», который является так называемым трехточечным значком. И R.menu.activity_main - это ваше меню xml.

Это работает!

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