3

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

我已经这样做了:

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>

在(夏洛克)片段中,我这样做了:

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);
}

但是,微调器不在中心,知道吗? 微调器不在中心

4

2 回答 2

0

这是因为您在 ActionBar 中的第二个项目,即 actionMapMore,也消耗了部分操作栏。您应该将菜单的第二项放在自定义布局中,并通过LinearLayout.

于 2013-11-25T23:36:11.303 回答
0

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

如果您有更好的解决方案,我很想听听。

于 2014-04-11T14:46:09.800 回答