지금까지 내가 찾은 가장 좋고 가장 간단한 대답은 여기에 있습니다 .
기본적으로이 경우 사용자 지정 레이아웃이 필요하지 않습니다. actonViewClass를 설정하십시오.
<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" /> <== this is all that's required
</menu>
그런 다음 평소와 같이 onCreateOptionsMenu에서 처리합니다.
@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);
spinner.setOnItemSelectedListener(onItemSelectedListener);
이것은 가장 간단하고 깨끗한 솔루션입니다. 원저자 François Poyer에게 감사드립니다.