Cómo agregar un elemento desplegable en la barra de acción
En mi aplicación Android Honeycomb, utilizo Tabs como estilo de navegación. Me gustaría añadir un elemento al lado del botón de desbordamiento, pero quiero que ese elemento sea una lista desplegable, y el usuario podrá seleccionar una opción allí, pero no relacionada con la navegación. ¿Cuál es la manera más fácil desde que estoy usando mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
¿Es posible hacerlo sin usar una vista personalizada?
- Elemento giratorio simple de Android
- Cómo detener la pantalla de desplazamiento a la parte superior de la selección de spinner en android
- ¿Cómo establecer el valor por defecto de Spinner como nulo?
- AppCompatSpinner vs android.widget.Spinner para la aplicación con min SDK versión 14
- Creación de ArrayAdapter mediante el recurso xml y recuperación de campos "id" o "value" mediante spinner
- Cómo crear un diálogo de alerta con una ruleta
- Android Spinner's onItemSelected ejecutado dos veces cuando se vuelve a Fragmento
- Establecer el texto de la vista alinear en el centro en el hilandero en Android
- Android Cómo recuperar el valor de Spinner añadido dinámicamente
- Cómo configurar la flecha desplegable en el hilandero?
- Populating Android Spinner con la lista de objetos
- Añade más espacio entre los elementos de Android Spinner sin estilo personalizado?
- Añadir Spinner a la barra de menús de acción
Primera opción:
Menu / options.xml:
<item android:icon="@drawable/ic_menu_sort" android:showAsAction="ifRoom"> <menu> <item android:id="@+id/menuSortNewest" android:title="Sort by newest" /> <item android:id="@+id/menuSortRating" android:title="Sort by rating" /> </menu> </item>
Segunda opción:
Menu / options.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menuSort" android:showAsAction="ifRoom" android:actionLayout="@layout/action_sort" /> </menu>
Layout / action_sort.xml:
<Spinner xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_menu_refresh" android:entries="@array/order" />
Documentos para recursos del menú – http://developer.android.com/guide/topics/resources/menu-resource.html
Absolutamente la mejor y la respuesta más simple que encontré hasta ahora está aquí .
Básicamente, no hay necesidad de diseño personalizado en este caso. Simplemente establezca 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>
Y luego manejarlo en onCreateOptionsMenu, como de costumbre:
@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); // get the spinner spinner.setAdapter(adapter); s.setOnItemSelectedListener(onItemSelectedListener);
Esta es, con mucho, la solución más simple y más limpia. Créditos a François POYER, el autor original.
Funcionará solo como desplegable
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!--<item--> <!--android:id="@+id/save_contact"--> <!--android:icon="@drawable/edit_new"--> <!--android:title="Save Contact"--> <!--app:showAsAction="never" />--> <item android:id="@+id/send_money" android:icon="@drawable/edit_new" android:title="Send Money" app:showAsAction="never" /> <item android:id="@+id/request_money" android:icon="@drawable/edit_new" android:title="Request money" app:showAsAction="never" /> <item android:id="@+id/recharge" android:icon="@drawable/edit_new" android:title="Recharge" app:showAsAction="never" /> </menu>
Fragmento interior
SetHasOptionsMenu (true)
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.chat_details_menu, menu); super.onCreateOptionsMenu(menu, inflater); }
- Android singleTask o singleInstance modo de inicio?
- Bloquear la aplicación del teléfono Android en el modo Retrato