titulo studio iconos icono cómo color cambiar botones boton barra bar añadir agregar android navigation-drawer android-5.0-lollipop android-toolbar contextual-action-bar

android - studio - ¿Cómo hacer que la barra de modo de acción contextual se superponga a la barra de herramientas de appcompat-v7 pero no el cajón de navegación?



color action bar android studio (1)

Tengo una actividad con una barra de aplicaciones y un cajón de navegación. La barra de aplicaciones se implementa utilizando la nueva clase de la Barra de herramientas de la biblioteca de appcompat-v7 versión 21. +, y el cajón de navegación se muestra delante de ella.

La actividad contiene una vista de lista con elementos que se pueden seleccionar, así que estoy mostrando una barra de acción contextual (CAB). Se inicia llamando a:

ActionBarActivity.startSupportActionMode(android.support.v7.view.ActionMode.Callback callback)

De forma predeterminada, el CAB se inserta encima de la barra de herramientas en lugar de superponerla; Parece que el CAB solo superpondrá el verdadero ActionBar de forma predeterminada. Como se muestra en esta respuesta , el CAB superpone correctamente la barra de herramientas cuando se establece esta propiedad del tema:

<item name="windowActionModeOverlay">true</item>

Pero esto también hace que el CAB superponga el cajón de navegación, que es incorrecto de acuerdo con las especificaciones de diseño del Material . Los principales documentos de diseño de Android aún recomiendan ocultar el CAB cuando se abre el cajón de navegación y mostrarlo nuevamente cuando está cerrado, y esto podría hacerse para "solucionar" el problema, pero no debería ser necesario. Tal como están escritas, las especificaciones de diseño del Material no especifican que el CAB debería estar oculto cuando se abre el cajón de navegación, y debido a que el cajón de navegación debería abrirse sobre el CAB, ocultar el CAB sería una distracción visual.

¿Hay alguna forma de mostrar el cajón de navegación frente al CAB mientras aún se superpone a la barra de herramientas?


Podría haber encontrado una solución, o tal vez una solución simple.
Tuve el mismo problema incluso con un ListFragment, cuando se startActionMode() lugar del setChoiceMode() . Así que miré el código ListFragment y descubrí que no se llama a startActionMode() en la actividad, sino en su ListView, así que intenté usar una vista. En mi código ahora aparentemente funciona como se espera usando el fragmento ListView:

ActionMode mActionMode = getListView().startActionMode(this);

o usando el contenedor de actividad que contiene mi fragmento:

View aView = getActivity().findViewById(R.id.container); ActionMode mActionMode = aView.startActionMode(this);

También:

  • Ahora el botón Atrás destruye el modo de acción, mientras que antes no lo hacía.
  • el CAB ahora cubre adecuadamente la barra de acción, mientras que el uso de windowActionModeOverlay en mi estilo cubría solo una parte, al menos en mi caso
  • el icono CAB es una flecha hacia atrás en lugar de una marca, aunque no estoy seguro de qué significa esto

Para ser honesto, no estoy seguro de las razones detrás de esto, así que no estoy seguro de qué tan seguras son estas soluciones, sin embargo, por el momento parece funcionar bien.
Si alguien tiene una mejor comprensión, no dude en comentar o editar.