Desactivación del cajón de navegación, alternar el botón de inicio / indicador hacia arriba en fragmentos

La puesta en marcha

Tengo una actividad cuyo contentView es una instancia de unDrawerLayout, que tiene un cajón de navegación con un indicador de cajón que se muestra en la barra de acción. La actividad contiene unFragmentllamémosloListFragment, que contiene una lista de opciones. Cuando se hace clic en una opción, sustituyo elListFragment con unDetailFragment.

En este punto, me gustaría mostrar una opción de navegación "arriba" en lugar del indicador del cajón de navegación. Puedo mostrar el icono "arriba" si desactivo el indicador del cajón llamandomDrawerToggle.setDrawerIndicatorEnabled(false), pero esto solo elimina el icono del cajón, no elimina la funcionalidad, es decir, cuando hago clic en el símbolo de navegación, el cajón de navegación aún está abierto.

Además, en estas subvistas, me gustaría deshabilitar la apertura del cajón arrastrando desde el borde de la pantalla. He intentado hacer esto llamandosetDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) pero no parece haber deshabilitado esta funcionalidad.

He intentado extender elActionBarDrawerToggle clase para evitar que se abra el cajón cuando se hace clic en el indicador; sin embargo, todo lo que sucede es que se realiza la acción de anulación (la navegación "hacia arriba"), pero el cajóntodavía abre.

También he implementado los pasos enCambio entre la imagen de Android Navigation Drawer y Up caret cuando se utilizan fragmentos . Funciona en la medida en que se muestra la visualización del cursor, pero a pesar de anular la función del botón arriba, el menú aún se abre (la aplicación retrocede, solo abre el cajón).

Pregunta

Por lo tanto, cuento largo: ¿hay alguna forma (preferiblemente limpia y elegante, pero en este punto voy a ir con hacky) para lograr estas cosas cuando mi raíz de diseño es unaDrawerLayout:

Reemplace el indicador del cajón con un cursor "arriba" (tentativamente posible a través demDrawerToggle.setDrawerIndicatorEnabled(false))Evita que el cajón se abra cuando se hace clic en el cursor, y en su lugar se anula con mi propia funcionalidad "arriba"Evita que el cajón se abra cuando arrastro desde el borde de la pantalla.Editar

Está bien, parece que si ambos anulanActionBarDrawerToggle YonOptionsItemSelected, el menú no se abre cuando hago clic en el cursor. Pero todavía se abre si arrastro desde el borde. ¡Ayuda!

Respuestas a la pregunta(5)

Su respuesta a la pregunta