web-dev-qa-db-ja.com

ActionBarにスピナーを追加する(ナビゲーションではない)

回答の2番目のオプションを使用してActionBarにスピナーを追加しました ここ

スピナーアダプターをスピナーに追加するにはどうすればよいですか? Googleが説明しているようにSpinnerオブジェクトを使用してみました ここ しかし、nullのSpinnerオブジェクトを取得します。

誰かがこれを行う方法を知っていますか?スピナーをアクションバーのナビゲーション領域に配置したくはありませんが、他のアクションアイテムと一緒に配置します(分割アクションバーを使用しています)。

助けてくれてありがとう!

11
user1509130

さて、私はサブメニューを使用するためのスピナーのアイデアを捨てました。スピナーは、選択されたままのものを選択するためのものであることに気づきました。サブメニューは、UIに合わせて調整されています。

6
user1509130

私はこれが古い質問であることを知っていますが、誰かが(私がしたように)それにつまずいて完全な答えを探している場合に備えて、互換性ライブラリを使用してそれを行う方法を示します。これにより、v7(Android 2.1 Eclair)から現在のv19(Android 4.4 KitKat)へ:

Menu_layout.xml内:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:yourapp="http://schemas.Android.com/apk/res-auto" >

  <item Android:id="@+id/spinner"
    yourapp:showAsAction="ifRoom"
    yourapp:actionViewClass="Android.widget.Spinner" />
</menu>

yourappとしてエイリアスされたhttp://schemas.Android.com/apk/res-auto名前空間を使用すると、古いバージョンのAndroidには存在しない属性showAsActionおよびactionViewClassを使用できます。

次に、アクティビティコードで:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_layout, menu);
    MenuItem item = menu.findItem(R.id.spinner);
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
    spinner.setAdapter(adapter); // set the adapter to provide layout of rows and content
    spinner.setOnItemSelectedListener(onItemSelectedListener); // set the listener, to perform actions based on item selection

Etvoilà!

30
François POYER

あなたがスピナーを捨てたことは知っていますが、他の人が同じ問題を抱えている場合や、別のアプリで同じパターンを開発するようになった場合に備えて、ここでいくつかのヒントを示します

  • Nullになったのは、IDを適切に指定しなかったためです。 IDを再確認してください。
  • 単なるスピナーであるactionLayoutを指定することにより、複雑なものに表示したリンクの中で、トリックを実行するactionViewClass = "Android.widget.Spinner"を指定するだけです。
  • 次に、OnCreateOptionsMenuで次のことを行います。

    inflater.inflate(R.menu.my_menu, menu); // inflate the menu
    Spinner s = (Spinner) menu.findItem(R.id.my_menu_spinner).getActionView(); // find the spinner
    SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity().getActionBar()
            .getThemedContext(), R.array.my_menu_spinner_list, Android.R.layout.simple_spinner_dropdown_item); //  create the adapter from a StringArray
    s.setAdapter(mSpinnerAdapter); // set the adapter
    s.setOnItemSelectedListener(myChangeListener); // (optional) reference to a OnItemSelectedListener, that you can use to perform actions based on user selection
    

幸せなコーディング...

15
Budius