Cómo obtener DrawerLayout para deslizarse sobre la barra ActionBar

Tengo un menú del cajón deslizante en una actividad, que tiene una barra de acción con algunas pestañas en ella.

Me gustaría que el cajón deslizante se deslice sobre las pestañas, no debajo de ellas.

Esto es lo que parece ahora …

Desplazamiento del menú debajo de las pestañas de la barra de acción

¿Alguna idea sobre cómo podría hacerse esto?

Nota: Entiendo que podría estar rompiendo algunas convenciones y patrones de interfaz de usuario aquí, y si no funciona en absoluto, buscaré alternativas. Pero me gustaría tener este trabajo primero.

EDIT: vea la siguiente captura de pantalla de la aplicación Google Play Music que hace exactamente lo que necesito. Vea la respuesta de @ CommonsWare abajo donde él está de acuerdo en que podría estar rompiendo la convención. Pero luego, dada la aplicación Play Music, puede que tampoco sea tan rara.

Navegación adecuada con pestañas deslizándose correctamente

¿Alguna idea sobre cómo podría hacerse esto?

Realice una de las siguientes acciones:

  • Cambie de las pestañas de la barra de acción, tal vez a ViewPager y un indicador con pestañas ( PagerTabStrip , TabPageIndicator de ViewPageIndicator)

  • Averigüe si una implementación de un cajón de terceros existente aún no se ha actualizado a los nuevos estándares de la interfaz de usuario

  • Fork DrawerLayout y modificarlo para adaptarlo

  • Gire su propio cajón de navegación desde cero

Entiendo que podría estar rompiendo algunas convenciones y patrones de IU aquí

Correcto .

Puede utilizar las librerías siguientes para obtener un modelo de navegación similar al de Google Play Music App.

  • ActionBarSherlock (github)
  • Fragmentos anidados (github)
  • PagerSlidingTabStrip (github)
  • NavigationDrawer (sitio de desarrolladores de Android)
  • Último soporte v4 library

He creado un cajón de la navegación del proyecto con el ejemplo de la tira de la lengüeta en el github, lo miro.

A continuación se muestra la captura de pantalla de la misma.

Navegador-cajón-página-deslizante-tab-tira

Compruebe también esta biblioteca http://www.androidviews.net/2013/04/pager-sliding-tabstrip/ El individuo hizo un gran trabajo. Puede utilizarlo con un cajón de navegación y funciona perfectamente.

Por último, una manera limpia de conseguir el cajón de navegación sobre las pestañas deslizantes en este blog http://www.paulusworld.com/technical/android-navigationdrawer-sliding-tabs

Esto se puede hacer sin una biblioteca de terceros. Echa un vistazo a las muestras de Google Sliding Tabs

  SlidingTabsBasic: http://developer.android.com/samples/SlidingTabsBasic/project.html SlidingTabsColors: http://developer.android.com/samples/SlidingTabsColors/project.html 

También, compruebe hacia fuera este acoplamiento impresionante: http://manishkpr.webheavens.com/android-sliding-tabs-example/ Trabajó como un encanto para mí. 🙂

Tuve el mismo problema, pero la única solución que encontré fue usar pestañas dentro del fragmento interno (no fragmentActivity). No sé si fue la mejor solución, el único problema que tuve fue diseñar estas pestañas, para el resto, funciona perfectamente

Logré cumplir este requisito estableciendo el modo de navegación dentro de las funciones OnDrawerClosed y onDrawerOpened. Es una solución temporal ya que las fichas en realidad no desaparecen inmediatamente.

  public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); if(getActionBar().getTabCount()>0) //Add tabs when the fragment has it getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ... } 

  public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); .. } 

Si usted tiene algunos fragmentos con pestañas, y otros sin ella no se olvide de quitar pestañas onCreateView de fragmento que no tiene pestañas.

  getActionBar().removeAllTabs(); 

No se puede utilizar simultáneamente la barra de navegación de Navigator y la bandeja de desplazamiento. Usted debe implementar el cajón de navegación con Actionbar y swipetabs por simples Tabhos. Puede utilizar tabhost para las pestañas y utilizar fragmentos para la vista interior de cada ficha. Los fragmentos se deben usar a través de viewpager para proporcionar efecto de desplazamiento / deslizamiento. Conectar las pestañas y viewpager con eachother a través de sus métodos

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabHost android:id="@+id/tabHost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <HorizontalScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="none" > <TabWidget android:id="@android:id/tabs" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TabWidget> </HorizontalScrollView> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/viewPager_home" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </LinearLayout> </TabHost> 

Reproducir música no utiliza ActionBar.Tab estándar Entonces puede implementar su propio contenedor de pestañas mediante la extensión de HorizontalScrollView y trabajar con ViewPager

Tengo lengüetas del uso dentro del fragmento del cajón. Resuelvo este problema añadiendo

 getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

En onDrawerClosed() y getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); En el método onDrawerOpend() .

Espero que esto ayude.

  • Android DialogFragment Redimensionamiento automático
  • Programmatically no puede alinear ImageView en RelativeLayout
  • Obtener / recoger una imagen de la aplicación de Android integrada en la Galería mediante programación
  • ViewPager no desliza con FragmentPagerAdapter
  • Eliminar la sombra de barra de notificación en la aplicación de Android
  • Obtener la posición de la imagen actual en la Galería
  • SetShadowLayer provoca lento tiempo de dibujo en GridView?
  • View.setEnabled (false) no funciona muy bien en android
  • ¿El ancho / altura de diseño relativo no funciona de forma programática?
  • Ejemplos de Fragmentos de Android
  • Android - Predibujar lienzo para onDraw
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.