Navigation Drawer y ActionBarCompat en Android

5 Ago

Desde hace un tiempo quería meterle mano de nuevo a la app de Castra Servilia para Android y renovar todo su interfaz. Aprovechando la salida de la nueva API y las librerías de soporte actualizadas, me he decido a darle caña al famoso Navigation Drawer y el ActionBarCompat. Facilidad y alta compatibilidad (he comprobado que todo funciona perfectamente en APIs >= 7) son los adjetivos que mejor las definen, nada que ver con el chanchullo de la ActionBarSherlock.

Para no complicar todo mucho, si has llegado aquí en busca de unos fuentes que tengan activado el navegador lateral y los iconos en la barra superior, puedes ir al final del post, allí tengo un enlace a GitHub donde podrás hacer lo que quieras con todos ellos. ¡Ojo! Todo esto está hecho con Android Studio (la versión 0.2.2 beta mientras escribo), por lo que aunque debería funcionar perfectamente en Eclipse, es probable que tengas que añadir la librería support-v7 de nuevo.

Este ejemplo se sale de lo que hay ahora mismo en la sección de Android Developers y en otros blogs. Funcionan el Navigation Drawer y el ActionBarCompat a la vez, además que funciona el enlace a los fragments y layouts correspondientes. Esto vale de esqueleto para cualquier aplicación que quieras hacer (quitando las imágenes y los textos, claro). Importa el código y juega con él, aquí hago unas pequeñas indicaciones de dónde tocar si lo usas o quieres probarlo por tu cuenta (mira el código, que son muchos pequeños detalles).

Navigation Drawer:

  • Podéis usar el código que existe en la página de developers, pero es preferible que aprovechéis el del código que comparto, por comodidad.
  • Del MainActivity.java solo deberías tocar los recursos de String para indicar el nombre de las opciones del Navigation Drawer y sus fragments correspondientes:

names = getResources().getStringArray(R.array.opciones_navigation_drawer);
classes = getResources().getStringArray(R.array.fragments_navigation_drawer);

  • Recordad tocar el archivo strings.xml con esos datos y mantened las strings de open, close… porque se necesitan.
  • Hay que crear fragments y layouts para cada opción (si así lo queréis). Con esto habría suficiente.

 

ActionBarCompat:

  • Además de coger los anterior, es necesario editar el menu.xml de una forma un tanto peculiar que encontraréis en el código de GitHub. Esto es por motivos de compatibilidad con versiones anteriores de Android.
  • En el ejemplo del código, es un icono en la barra superior, que al ser pulsado lanza el navegador web. Para que el icono se muestre, se deben tocar el menu.xml y el MainActivity en su método onPrepareOptionsMenu, incluyendo dentro del icono de la forma en la que se indica en el código. Funciona exactamente igual que una entrada del menú, por lo que para asociarle la opción solo hay que acudir y onOptionsItemSelected y añadir el case correspondiente.
  • Es necesario añadir la librería de soporte v7, si usais Android Studio lo mejor es copiarla desde la carpeta del SDK e incluirla en el proyecto. OJO, también se debe hacer esto con los layouts del theme AppCompat. ¡Y actualizad el build.gradle, hay que meter la dependencia de la librería a mano!
  • En el Manifest, además de poner como SDK mínimo el 7, se debe añadir en la zona de aplicación el theme AppCompat.

 

Si tenéis cualquier duda con el código, comentadlo. Es mucho más fácil de lo que parece. ¡Y usad Android Studio! Si os libráis de la ActionBarSherlock, probad el pack completo de hacer algunos pinitos con la Navigation Drawer y el ActionBarCompat.

 

Código en GitHub con un ejemplo de Navigation Drawer, ActionBarCompat y fragments en una misma app: NavigationDrawerYActionBarCompat

 

5 thoughts on “Navigation Drawer y ActionBarCompat en Android

  1. Hola, hace una semana que trato de crear un Navigation Drawer y ActionBarCompat y no puedoy tengo la impresion de que tu codigo me puede salvar pero no puedo cargarlo ojala puedas ayudarme y si no es mucho pedir un tutorial de como lo hiciste…
    gracias de antemano

    • Edito: si puedo cargarlo pero tengo problemas en themes_base, aparecen en rojo:
      – @drawable/abc_menu_hardkey_panel_holo_dark
      – @style/TextAppearance.Widget.AppCompat.ExpandedMenu.Item
      – @style/Widget.AppCompat.ListView.Menu
      – @style/TextAppearance.AppCompat.Base.CompactMenu.Dialog

      • ¡Hola!

        Eso mismo me pasaba a mí. Lo solucioné copiando el archivo del theme del AppCompat a la carpeta correspondiente de mi proyecto actual. Te comento más o menos cómo lo hice (hace tiempo que no inicio un proyecto desde cero así, estoy modificando los existentes). Partiendo del hecho de que usé el Android Studio en Ubuntu:
        – Te vas a donde tengas instalado Eclipse/AndroidStudio, a una ruta similar a “…/android-studio/sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar” y copias ese archivo.
        – Ahora te vas a la ruta donde tengas tu proyecto e importas la librería (o la copias a nombreproyecto/libs). Asegúrate de que está bien importada y sin errores.

        Así debería funcionarte para que puedas usar bien el AppCompat en tu proyecto de Android. Un saludo 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *