2012-12-20 117 views
2

我試圖顯示一個帶兩個項目的操作欄,取消和保存,但是我希望這些菜單項橫跨操作欄的整個長度,如下所示:使用ActionBarSherlock設置菜單項居中和全角

______________________________ 
|____Cancel____|____Save ____| 
|       | 
|       | 
|       | 
|       | 

所以基本上我需要一種方法來顯示只有兩個行動項目,居中,並跨越整個行動欄。

完成此操作的最簡單方法是什麼?我正在考慮使用自定義佈局,但由於我還不熟悉如何使用操作欄和菜單,我不確定我如何能夠做到這一點,並且仍然是菜單操作項目。

是否有某種造型解決方案?完成這個最好和最無痛的方法是什麼?

編輯

因爲這是我第一次去的動作條和自定義佈局,我沒有感受什麼工作,什麼是那根本行不通絕望愚蠢的做法。例如,設置自定義佈局,這一點:

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

    <item android:id="@+id/menu_item_cancel" 
      android:showAsAction="always" 
      android:title="Cancel"/> 

    <item android:id="@+id/menu_item_save" 
      android:showAsAction="always" 
      android:title="Save" /> 
</menu> 

導致通貨膨脹例外,將無法正常工作,雖然其他人有更多的經驗將rightaway知道這可不行,我留下笨拙約燃燒時間直到我能感覺到我的出路或有人指出我朝着正確的方向前進。

所以對於那些詢問我所嘗試過的東西,我會繼續發帖,但期待大部分相同。

第二個嘗試

獲得一個ClassNotFoundException:未找到路徑

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal"> 

    <menu android:layout_gravity="center_horizontal"> 

     <item android:id="@+id/menu_item_cancel" 
       android:showAsAction="always" 
       android:title="Cancel"/> 

     <item android:id="@+id/menu_item_save" 
       android:showAsAction="always" 
       android:title="Save" /> 
    </menu> 

</LinearLayout> 

第三類 「android.view.menu」 嘗試

這幾乎工程,除我只看到每個按鈕的上半部分。即使動作欄似乎有足夠的空間讓它正確繪製,下半部分也會被切斷。

我也失去了行動項目造型,因爲這些是正常的按鈕,以及分頻器。我更願意找到一個使用原生動作項目的解決方案,因爲它可以使整個應用程序中的其他動作條更容易風格化。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal"> 

       <Button 
        android:id="@+id/cancel_btn" 
        android:layout_width="0dp" 
        android:layout_height="fill_parent" 
        android:layout_weight="1" 
        android:text="Cancel" /> 

       <Button 
        android:id="@+id/save_btn" 
        android:layout_width="0dp" 
        android:layout_height="fill_parent" 
        android:layout_weight="1" 
        android:text="Save" /> 
</LinearLayout> 

第四嘗試

這一個是八九不離十。我正在瀏覽ActionBarSherlock演示項目,並注意到當使用分割菜單欄時,佈局趨於居中。所以我回到了我一直使用的原始菜單,並添加了showAsAction ifRoom值。

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

    <item android:id="@+id/menu_item_cancel" 
      android:showAsAction="ifRoom" 
      android:title="Cancel"/> 

    <item android:id="@+id/menu_item_save" 
      android:showAsAction="ifRoom" 
      android:title="Save"/> 
</menu> 

我也在清單將此添加到我的活動:

android:uiOptions="splitActionBarWhenNarrow" 

這給我確切的造型我想...但它在拆分操作欄。我想要在頂部,而不是在底部。在Android 2.2的模擬器上運行這個工程,但似乎將兩個選項居中與文本長度成正比,所以取消區域大於保存區域。

如果有人知道一種方式來獲得這個確切的樣式,但在頂部的操作欄,這將解決一切。

+0

http:// www.whathaveyoutried.com /'? – rekire

+0

我正在嘗試使用不同方法來定製視圖。但是,我也想看看是否有簡單的,衆所周知的方法可以節省我的時間。我會用我試過的東西來更新我的問題。 – InverseFalcon

回答

0

似乎沒有辦法用原生動作條樣式或選項來做到這一點。必須使用自定義視圖,類似於我的第三次嘗試,修改了樣式和背景以模仿操作欄。