私が行ったように(私はこれが古い質問ですけど、念の誰かがそれにつまずきます)、まだ完全な答えを探しています。互換ライブラリを使用してv7(Android 2.1 Eclair)から現在のv19(Android 4.4 KitKat)まで対応する方法は次のとおりです。
in 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
は、Androidの古いバージョンに存在しない属性showAsActionとactionViewClassを使用することができますようエイリアスhttp://schemas.android.com/apk/res-auto
名前空間を使用します。あなたのアクティビティコードで次に
:
@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
のEtほら!
これはカスタムアダプターではどのように機能するのでしょうか? Spinnerに表示するテキストの代わりにイメージを使用していますので、SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity()。getActionBar() .getThemedContext()、R.array.my_menu_spinner_list、android.Rという行が表示されます。 layout.simple_spinner_dropdown_item); 'カスタムアダプタでは異なる必要があります。方法を理解できません。 – Azurespot
あなたのカスタムアダプターにあるコンストラクターを呼び出します。 'SpinnerAdapter mSpinnerAdapter = new MyCustomAdapter()' – Budius
Budiusさん、ありがとうございましたが、何らかの理由でドロップダウンが発生しません。これは、カスタムアダプタで 'android.R.layout.simple_spinner_dropdown_item'が見つからないためです(Drawables配列が入る場所であるImageViewとしてSpinnerの行が使用されるため)。しかし、それが問題なのかどうかは分かりません。私のコードをチェックアウトしたければ:http://stackoverflow.com/questions/30433501/custom-spinner-not-showing-dropdown-in-actionbar-icon質問にはまだ答えがありません。ありがとう。 – Azurespot