Sé que esto es una cuestión de edad, pero por si acaso alguien tropieza en él (como lo hice) y aún busca una respuesta completa, aquí está cómo hacerlo usando la biblioteca de compatibilidad, para que funcione desde v7 (Android 2.1 Eclair) hasta v19 actual (Android 4.4 KitKat):
en 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>
Usando http://schemas.android.com/apk/res-auto
espacio de nombres de alias, tal como yourapp
le permite utilizar el showAsAction atributos y actionViewClass que no existe en las versiones anteriores de Android.
Luego, en el código de la actividad:
@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 voilà!
¿Alguna idea de cómo esto funcionaría para un adaptador personalizado? Estoy usando imágenes en lugar de palabras de texto para mostrar en el Spinner, por lo que la línea 'SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource (getActivity(). GetActionBar() .getThemedContext(), R.array.my_menu_spinner_list, android.R. layout.simple_spinner_dropdown_item); 'debe ser diferente para un adaptador personalizado. No puedo entender cómo. – Azurespot
solo invoque el constructor que tenga en su adaptador personalizado. 'SpinnerAdapter mSpinnerAdapter = new MyCustomAdapter()' – Budius
Gracias Budius, lo hice, pero por alguna razón el menú desplegable no sucede. Pensé que era porque 'android.R.layout.simple_spinner_dropdown_item' falta en mi adaptador personalizado (ya que utiliza una fila de Spinner como ImageView, un lugar donde entra la matriz de los drawables). Pero no estoy seguro de si ese es el problema. Si desea ver mi código: http://stackoverflow.com/questions/30433501/custom-spinner-not-showing-dropdown-in-actionbar-icon La pregunta sigue sin respuesta. Gracias. – Azurespot