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>

(Sherlock)Fragment では、次のようにしました。

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

これを行う 1 つの方法は、ActionBar のカスタム ビューを実装することです。スピナーだけでなく、カスタム ビューを使用して事実上あらゆるものを表示できます。欠点は、ActionBar のメニュー項目の追加/削除を自分で処理する必要があることです。

より良い解決策があれば、ぜひお聞きしたいです。

于 2014-04-11T14:46:09.800 に答える
0

これは、ActionMapMore である ActionBar の 2 番目のアイテムもアクション バーの一部を消費するためです。メニューの 2 番目の項目をカスタム レイアウトに配置し、 で正しく操作する必要がありますLinearLayout

于 2013-11-25T23:36:11.303 に答える