1

我的操作欄菜單項正在切斷操作欄Spinner的寬度,以便Spinner的文本被截斷。我已將所有菜單項設置爲使用「ifRoom」,但不幸的是,他們將原始Spinner寬度解釋爲可用空間。切斷內置Spinner的操作欄(Sherlock)菜單項

這裏是截斷時,我有三個菜單項(是的,我知道的第三個圖標看起來與第二個):

Action bar with truncated spinner

這裏的時候我註釋掉第三個菜單項我得到什麼。最後,我想要的東西,看起來像這樣,但隨着而非顯示搜索圖標溢出圖標:

Action bar with full spinner but only two menu items

我使用微調自定義適配器(從BaseAdapter擴展和實現SpinnerAdapter)填充。

這裏是我的菜單XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/ab_refresh" 
     android:orderInCategory="1" 
     android:showAsAction="ifRoom" 
     android:title="@string/ab_refresh" 
     android:icon="@drawable/navigation_refresh"/> 

    <item 
     android:id="@+id/ab_search" 
     android:orderInCategory="2" 
     android:showAsAction="ifRoom|collapseActionView" 
     android:title="@string/ab_search" 
     android:icon="@drawable/action_search" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView"/> 

    <item 
     android:id="@+id/ab_toggle" 
     android:orderInCategory="3" 
     android:showAsAction="ifRoom" 
     android:title="@string/ab_latest" 
     android:icon="@drawable/action_search"/> 

</menu> 

這是我的ab_dropdown XML(在getView使用我的自定義適配器):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rel" 
    android:layout_width="match_parent" 
    android:layout_height="30dp" 
    android:gravity="fill_horizontal"> 

    <TextView 
     android:id="@+id/txt" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:textSize="20sp" 
     android:textStyle="bold" 
     android:layout_marginLeft="5dp" 
     android:layout_marginTop="1dp" /> 

</RelativeLayout> 

我已經試過:

  1. 爲ab_dropdown的RelativeLayout和TextView設置570dp的minWidth。無論我是將其設置爲XML還是使用自定義適配器的getView方法,都無效。
  2. 將RelativeLayout和TextView的layout_width硬編碼爲570dp。再一次,在XML或代碼中沒有效果。
  3. 我會嘗試以編程方式找到操作欄微調框以設置其寬度,但是當我tried to do this for a different reason時,我不能。

任何想法?

回答

0

就我個人而言,我會切換到導航抽屜並轉儲下拉列表導航。

這就是說,它聽起來像你需要兩個版本的菜單資源。在工具欄中默認第三項爲never(始終處於溢出狀態),並在較大的屏幕上顯示爲ifRoom(例如,res/menu-sw600dp/)。

您也可以使用AutoScaleTextView作爲下拉列表導航標籤。

操作欄的導航部分被認爲是最不重要的,這就是爲什麼ifRoom認爲有空間。