Cómo agregar acciones a la parte superior de una ActionBar dividida

Si una ActionBar de Android se divide en una parte superior e inferior usando android:uiOptions="splitActionBarWhenNarrow" en el objeto Manifext.xml, ¿hay alguna manera de forzar que algunas de las acciones se muestren en la parte superior en lugar de tenerlas todas en la parte inferior?

preguntado el 31 de enero de 12 a las 08:01

Parece que la respuesta es "no" y fue respondida en stackoverflow.com/questions/8571754/… -

3 Respuestas

No hay una forma estándar de hacer esto. Dicho esto, la vista personalizada de la barra de acción aparecerá en la barra superior, por lo que puede usarla. Perderás algunos de los extras (brindis con una pulsación larga), por lo que tendrás que implementarlos tú mismo. Dicho esto, si estás usando ActionBarSherlock, todos los diseños y estilos para un botón normal están ahí, así que puedes usarlos.

Respondido 27 Abr '13, 12:04

¡Sí! Puedes seguir usando android:uiOptions="splitActionBarWhenNarrow" en su Manifest.xml.

Solo necesitas configurar:

// set the actionbar to use the custom view
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

//set the custom view to use
getActionBar().setCustomView(R.layout.custom_action_bar_top);

Dónde R.layout.custom_action_bar_top sería una vista que tiene todos los botones que desea que aparezcan en la barra de acción superior.

Todos los elementos del menú que desee en la parte inferior, deben agregarse como de costumbre en el onCreateOptionsMenu método de su actividad.

contestado el 08 de mayo de 13 a las 07:05

Hola @immersion, esto tiene sentido, pero ¿lo has probado? ¿Funciona realmente de esa manera? - Ericn

Hola @fuzzybee, sí, cuando necesitaba hacer esto, solo necesitaba una barra de búsqueda en la parte superior, así que usé: SearchView searchView = new SearchView(context); getSupportActionBar().setCustomView(searchView, new LayoutParams(Gravity.RIGHT)); Si quieres ver cómo se ve, echa un vistazo SwishPix. La captura de pantalla de la lista de álbumes es un ejemplo de cómo podría verse. - Dylan Watson

Con esta solución, también tendría que volver a implementar el icono y el título manualmente, por lo que no será una solución fácil. - Andrés

A menos que algo haya cambiado desde la última vez que miré, usando el setCustomView El enfoque no elimina el título o el ícono 'Arriba / Inicio'. Puede usarlos como de costumbre. - Dylan Watson

En mi aplicación compilada para 4.4 y ejecutándose en 4.4, esto hace que el ícono de mi aplicación y el título de la actividad desaparezcan. Pero agregar DISPLAY_SHOW_HOME y DISPLAY_SHOW_TITLE a setDisplayOptions los devuelve. - arlomedia

Me gustaría apoyar la solución de Dylan Watson, pero con una mejora. Para aquellos que deseen mantener el título y no reemplazar la barra de acción completa con su nueva Vista, usan getActionBar().setDisplayShowCustomEnabled(true) , más bien que getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); , ya que esto último hará que la nueva vista sea la única vista que se muestre en la barra de acciones. Mi código:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = new SearchView(this);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    getActionBar().setDisplayShowCustomEnabled(true);
    getActionBar().setCustomView(searchView, new ActionBar.LayoutParams(Gravity.RIGHT));
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

Respondido 12 Jul 14, 03:07

Confirmado, esto habilita la vista personalizada sin deshabilitar el botón de inicio y el título como en la respuesta de Dylan. Si el título aún no aparece, es posible que esté cubierto por la vista personalizada; esta respuesta proporciona algunas opciones de diseño: stackoverflow.com/a/16517395/462162 - arlomedia

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.