如何将片段中的微调器置于操作栏中

时间:2013-10-09 13:29:26

标签: android android-actionbar spinner android-ui

那么,如何在片段的动作栏中心添加一个微调器?

我已经这样做了:

ActionBar菜单文件: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>

ActionBar微调文件: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

2 个答案:

答案 0 :(得分:0)

这是因为ActionBar中的第二个项目actionMapMore也会占用操作栏的一部分。您应该将菜单的第二项放在自定义布局中,并通过LinearLayout正确操作。

答案 1 :(得分:0)

您可以这样做的一种方法是为ActionBar实现自定义视图。您可以使用自定义视图显示几乎任何内容,而不仅仅是微调器。缺点是您需要自己处理ActionBar中的添加/删除菜单项。

如果你有更好的解决方案,我很乐意听到。