2013-04-26 28 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。

它的工作原理!