2013-04-26 72 views
2

我有一个问题,当我尝试在我的动作条设置一个项目一如既往可见光和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

编辑:

我的问题是,因为当你使用一个的动作条设备有一个“菜单”硬件按钮,3点下拉菜单不会显示,只有按下菜单硬件按钮才会显示4个其他项目。有谁知道这种行为是否可以修改?

回答

1

嗯,也许我误解了,但如果您希望将其余四项放入溢出操作菜单(三点图标),则使用android:showAsAction="never"而不是"collapseActionView"应该这样做。

...尝试了几种方法,但是这并获得成功: Force overflow menu in ABS

+0

下面你的推荐我得到相同的结果,只有一个图标可见,3点图标不显示。 – BigBen3216 2013-04-26 15:26:26

+0

对于这个Acivity''onCreateOptionsMenu(菜单菜单)''里面的第一行,getSupportMenuInflater()。inflate(R.menu.yourMenuLayout,menu);'? – es0329 2013-04-26 16:06:38

+0

是的,我有这一行,实际上它正确读取menu.xml文件,您可以在我的编辑中看到问题仅出现在具有“菜单”硬件按钮的设备中,当您单击该按钮时出现的项目但3点图标不可见。 – BigBen3216 2013-04-26 16:13:23

1

我遇见了同样的问题,我的解决方案是非常简单的。 (我没有使用HoloEverywhere。)

该想法来自ABS示例项目,其下拉菜单可以在4.0之前的设备上显示,也可以使用子菜单。所以,我的想法是使用一个子菜单来掩饰3点图标。下面的代码:

@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__ic_menu_moreoverflow_normal_holo_dark.png”的ABS源代码res/drawable-xxdpi文件夹中复制,这是所谓的3点图标。 R.menu.activity_main是你的菜单xml。

它的工作原理!