2013-10-09 132 views
3

那麼,如何從片段中添加一個微調器在操作欄的中心?如何從片段中心在操作欄中的微調器

我已經做到了這一點:

動作條菜單文件:R.menu.tabmap

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

    <item 
     android:id="@+id/action_map_spinner" 
     android:showAsAction="always" 
     android:actionLayout="@layout/actionbar_spinner"> 
    </item> 

    <item 
     android:id="@+id/action_map_more" 
     android:orderInCategory="100" 
     android:showAsAction="always|withText"   
     android:icon="@drawable/ic_setting" 
     android:title="@string/action_map_more"/> 

</menu> 

動作條微調文件:R.layout.actionbar_spinner

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="center|top" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <Spinner 
     android:id="@+id/actionbar_spinner_change_map" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" /> 

</LinearLayout> 

在( Sherlock)片段,我做到了這一點:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ 
    inflater.inflate(R.menu.tabmap, menu); 
    Spinner spinner = (Spinner) menu.findItem(R.id.action_map_spinner).getActionView() 
           .findViewById(R.id.actionbar_spinner_change_map); 

    spinner.setAdapter(mSpinnerAdapter); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

但是,微調不在中心,任何想法? Spinner not in center

回答

0

這是因爲ActionBar中的第二個項目(actionMapMore)也消耗了部分操作欄。您應該將菜單的第二項放入自定義佈局中,並通過LinearLayout正確操作。

0

您可以執行此操作的一種方法是爲您的ActionBar實現自定義視圖。您可以使用自定義視圖顯示幾乎任何內容,而不僅僅是一個微調框。缺點是你需要自己處理ActionBar中的添加/刪除菜單項。

如果你有更好的解決方案,我很樂意聽到。