«

»

nov 22 2011

ViewPager: Añadiendo títulos

Siguiendo con el artículo publicado en androcode ViewPager: Implementando columnas vamos a personalizar nuestro sistema de columnas con títulos. Como ya sabemos, el elemento ViewPager está basado en el nuevo diseño del market o de la aplicación Google+ pero estas dos aplicaciones cuentan con algo distinto a nuestra aplicación ejemplo con columnas, el título de cada pantalla.

Android Market

En esta entrada vamos a ver cómo añadir dichos títulos haciendo uso de la librería Android-ViewPagerIndicator de Jake Wharton. Existen otras alternativas, como la de Zylinc, pero he optado por la de Jake Wharton por lo siguiente:

Lo primero que tenemos que comprobar es que disponemos de la última versión del Android Compability Package (en el momento de crear el post era la revisión 4). Si no la tenemos es mejor actualizar o no podremos usar la última versión de Android-ViewPagerIndicator.

Una vez confirmado que tenemos la última versión del Android Compability Package vamos a obtener la última versión de Android-ViewPagerIndicator. Lo más fácil es ir a la pestaña de los “tags” (https://github.com/JakeWharton/Android-ViewPagerIndicator/tags) en la página oficial del proyecto y descarga la última versión (actualmente la 2.0.0).

Ahora descomprimimos el fichero en alguna carpeta e importamos el proyecto en nuestro workspace. Una forma fácil de hacerlo es crear un proyecto nuevo a partir de código fuente, tal y como se muestra a continuación.

Es posible que tengamos que añadir la librería de compatibilidad al classpath, para ello nos vamos a la carpeta “libs” del proyecto recién creado, pulsamos con el botón derecho sobre “android-support-v4.jar” y seleccionamos “Build Path -> Add to Build Path”

Vale, ya tenemos la librería bien configurada. De momento partimos de algo parecido a lo siguiente (columnas simples, en la que cada pantalla muestra la letra “C” más el número de columna):

Puedes descargar el proyecto base desde aquí: PruebaViewPager

Ahora tenemos que añadir la librería a nuestro proyecto de columnas. Para ello, pulsamos con el botón derecho sobre nuestro proyecto, seleccionamos “Properties”. Dentro de la sección android (en la parte izquierda), pulsamos en “Add…” dentro la parte de “Library”. Por último, seleccionamos el proyecto de la librería (JW-ViewPagerIndicator en mi caso) y pulsamos en finish.

Una vez añadida la librería, lo siguiente es añadir el elemento TitlePageIndicator a nuestro layout donde se encuentra el ViewPager.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical">

    <com.viewpagerindicator.TitlePageIndicator
       android:id="@+id/titulos"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent" />

    <android.support.v4.view.ViewPager
       android:id="@+id/columnas"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" />

</LinearLayout>

Ahora, en nuestro método onCreate añadimos el “adapter” al indicador, quedando de la siguiente forma:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    cxt = this;

    miAdapter = new ColumnasAdapter();
    columnas = (ViewPager) findViewById(R.id.columnas);
    columnas.setAdapter(miAdapter);

    // Parte nueva: Añadimos el Adapter al indicador
    TitlePageIndicator titleIndicator = (TitlePageIndicator)findViewById(R.id.titulos);
    titleIndicator.setViewPager(columnas);
}

Por último tenemos que implementar la parte que nos dará los títulos de las columnas, para ello simplemente implementamos el método getPageTitle en nuestro adapter:

private class ColumnasAdapter extends PagerAdapter {

// ...

    @Override
    public CharSequence getPageTitle(int position) {
        return "Columna " + (position + 1);
    }

// ...

}

Ahora nuestro proyecto presenta un estilo como el siguiente:

Para finalizar vamos a ver cómo personalizar un poco el estilo del indicador. El autor de la librería permite cambiar parámetros como el padding, colores, tamaño, etc. Existen dos formas de cambiar el estilo, veamos cada una de ellas.
Por código XML

Por estilos

Creamos un fichero de estilos (res/values/styles.xml) con el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomTitlePageIndicator">
        <item name="android:background">#18FF0000</item>
        <item name="footerColor">#FFAA2222</item>
        <item name="footerLineHeight">1dp</item>
        <item name="footerIndicatorHeight">3dp</item>
        <item name="footerIndicatorStyle">underline</item>
        <item name="android:textColor">#AAFFFFFF</item>
        <item name="selectedColor">#FFCCCCCC</item>
        <item name="selectedBold">true</item>
    </style>
</resources>

Y asociamos el estilo a nuestro TitlePageIndicator:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

    <com.viewpagerindicator.TitlePageIndicator
       android:id="@+id/titulos"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       style="@style/CustomTitlePageIndicator" />

    <android.support.v4.view.ViewPager
       android:id="@+id/columnas"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" />

</LinearLayout>


Por código Java

La última opción que tenemos es personalizar el estilo mediante código Java. El método onCreate quedaría:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    cxt = this;

    miAdapter = new ColumnasAdapter();
    columnas = (ViewPager) findViewById(R.id.columnas);
    columnas.setAdapter(miAdapter);

    // Añadimos el indicador al Adapter
    TitlePageIndicator titleIndicator = (TitlePageIndicator)findViewById(R.id.titulos);
    titleIndicator.setViewPager(columnas);

    final float density = getResources().getDisplayMetrics().density;
    titleIndicator.setBackgroundColor(0xFFDDDDDD);
    titleIndicator.setFooterColor(0xFFEE3333);
    titleIndicator.setFooterLineHeight(2 * density);
    titleIndicator.setFooterIndicatorStyle(IndicatorStyle.None);
    titleIndicator.setTextColor(0xFF999999);
    titleIndicator.setSelectedColor(0xFF000000);
    titleIndicator.setSelectedBold(false);
}


Tienes disponible el código fuente en Google Code:

Además del TitlePageIndicator también tenemos el CirclePageIndicator, que nos permite indicar la columna en la que estamos mediante círculos y TabPageIndicator que representa los títulos como si fueran pestañas.

Junto a la librería que descargamos de la web del proyecto (https://github.com/JakeWharton/Android-ViewPagerIndicator) podemos encontrar también un proyecto de demostración (llamado samples) que muestra los tres tipos de indicadores y las distintas formas de personalizar cada uno de ellos. De forma alternativa, podemos obtener la aplicación de demo en el market de android:

Nada más, espero que os sea de utilidad el artículo.

Acerca del autor

FedeProEx

Ingeniero Informático en la Universidad de Sevilla, programador Java y amante del Heavy Metal. Soy desarrollador android fuera del horario de trabajo con algunas aplicaciones en el market como Tiempo AEMET o aconTags

  • javi

    Hola Fede, me parece un articulo fantastico.
    Estoy intentando implementarlo pero me da un error en el layout,

    The following classes could not be instantiated:
    com.viewpagerindicator.TitlePageIndicator

    Sin embargo, la clase esta en el path, en el codigo la reconoce sin problemas.

    Podrias subir el codigo del ejemplo.

    Gracias.
    Un saludo.

    • Jorge Gomes

      A mi me pasaba lo mismo, si quitas los atributos app: no te deberia fallar, no se porque pero no me los reconoce, yo cambio el estilo creando un style

      • FedeProEx | Redactor

        Ya sé cuál es el problema, comprobad que el paquete que se especifica en el AndroidManifest.xml coincide con el de la declaración de namespace. Por error subí el proyecto con el paquete “es.androcode.viewpager.prueba” y en la declaración de namespace ponía “es.androcode.prueba”.

        Ya está corregido y subido el proyecto de ejemplo.

        Saludos

        • javi

          Gracias chicos, ahora si, aunque al poner en modo grafico el layout, me sigue dando error que no puede crear una instancia de la clase, pero funciona, es un mal menor.

          Si seguis con estos articulos, vais a ser mi pagina de cabecera, seguir asi.

          Un saludo.

  • http://projectsexception.com Fede

    Hola Javi,

    Me alegro que te haya gustado el artículo. Hasta mañana no tengo acceso al código, pero no me importa subir el proyecto. En cuanto al error no sé a qué puede deberse, es raro. Mañana comprimo y subo el proyecto.

    Saludos

  • Jorge Gomes

    Por casualidad no estarà en produccion un tutorial de como usar el actionbar usando el android Support Package.

    • http://hackedbrain.blogspot.com/ JMPergar | Editor Jefe

      Ya esta publicado con anterioridad, te paso el link http://androcode.es/2011/11/viewpager-implementando-columnas/

      • Jorge

        Perdon, pero es link va al tutorial del viewpager, yo decia mas la parte de como hacer el actionbar de android 3, en android 2 con la ayuda del android suport package

        • http://hackedbrain.blogspot.com/ JMPergar | Editor Jefe

          ahh perdon, no lo tenemos pero nos lo apuntamos.

  • Alexrs95

    Genial artículo, justo lo que estaba buscando. ¿A partir de que versión de Android podemos usar esta librería? :)
    Seguid así.

    • http://hackedbrain.blogspot.com/ JMPergar | Editor Jefe

      El ViewPager se puede usar a partir de Android 1.6, esta libreria en concreto supongo que es igual pero quizas @FedeProEx te pueda contestar mejor.

  • FedeProEx | Redactor

    Según el AndroidManifest de la librería funciona a partir del API level 4 (versión 1.6)

  • Daniel González

    Antes de nada felicitarte por el artículo, es el que he seguido para implementar VPI en mi app.

    Pero te quiero comentar un problema que me pasa haber si me puedes ayudar. El programa compila y ejecuta pero, en tiempo de ejecución, cuando paso de una columna a otra y llego a la 3ºcolumna (última columna) o paso de la 2º columna a la 1º columna, la app peta y me da el siguiente error en el LogCat:

    java.lang.UnsopportedOperationException:
    el método requerido destroyItem no fue sobreescrito.

    ¿A ti te ha pasado el mismo problema? Estoy seguro de que es una tontería porque tiene to la pinta.

    Estoy iniciándome en Android y la verdad es que en java tengo prácticamente nada de experiencia.

    ¿Puedes ayudarme?
    Un saludo.

    • FedeProEx | Redactor

      Me alegro que te guste. Tiene toda la pinta de que no has sobrescrito el método destroyItem en el adapter. Asegúrate que la clase que extiende PageAdapter (en el ejemplo se llama ColumnasAdapter) implementa el siguiente método:

      1
      2
      3
      4
      @Override
      public void destroyItem(View collection, int position, Object view) {
          ((ViewPager) collection).removeView((LinearLayout) view);
      }

      Por supuesto siempre puedes incluir tu propia implementación de dicho método, pero la idea es que es obligatorio definirlo y debe encargarse de eliminar la vista pasada por parámetros del layout.

      Espero que esto solucione tus problemas.

      Saludos!

  • Daniel González

    Así es. Muchísimas gracias por el apunte. Lo he combinado con el ActionBar que me ofrece la librería GreenDroid, el cual también seguí por un compañero tuyo (JMPergar), y además que son totalmente compatibles, queda muy elegante.

    Un saludo.

  • Paulo Cesar

    Hola Fede, muchas gracias por tu articulo me ha sido de mucha ayuda para un proyecto que estoy desarrollando me parece fantástico , me gustaría hacerte una pregunta, es posible implementar o hacer un llamado a una activity diferente por cada una de las columnas y así poder utilizar un layout diferente ? tu ayuda seria muy importante … agradezco mucho tu atención y quedo atento a tus comentarios de verdad muchas gracias

  • Paulo Cesar

    Hola Fede, de verdad muchas gracias por tu ayuda, tendré muy en cuenta tus recomendaciones,la verdad soy nuevo en esto y es muy interesante tu material, espero contar con tu colaboración mas adelante, porque se que me surgirán muchas mas preguntas…. muy agradecido

    Saludos

    • FedeProEx | Redactor

      Sin problemas, aquí estaremos. De todas formas hay varios redactores, el contenido no sólo es mío :-D.

      Saludos

  • alberto

    Hola Fede, enhorabuena por el artículo y por Aemet! Te paso paso a comentar mi duda, en uno de los layouts he puesto varios objetos (una galería y un VideoView) que desde el main no puedo referenciarlos me da error null pointer exception, los estoy intenando referenciar con findViewByID(R.layout.columna2).findViewById(R.id.galeria)

    y con titleIndicator.findViewById… (como antes) pero sigo sin poder apuntar a los items.

    Resumiendo por si me expliqué mal que me suele pasar, hay alguna forma de referenciar a los layouts que usa el viewpager despues de poner setContentView(R.Layout.main) y que cargue los objetos? (probé a set content view la columna 2 para relacionar las variables con los objetos y al final volver a poner set content view main y deja de referenciar :(

    si no me expliqué ahora tampoco dimelo e intento explicarlo en algo que tenga más sentido que sólo mi cabeza :D gracias!

    • FedeProEx | Redactor

      Buenas Alberto, me alegro que te guste el artículo. Yo normalmente lo he resuelto creando una variable en la clase principal y modificándola al instanciar la vista en el PagerAdapter. Los pasos serían:

      1. Declarar las variables en la clase principal

      1
      2
      3
      4
      5
      public class PruebaViewPagerActivity extends Activity {
          // ...
          protected View galeria;
          protected View video;
          // ...

      2. Asignar los valores en el método instantiateItem en ColumnasAdapter

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      @Override
      public Object instantiateItem(View collection, int position) {
          View v;
          // Crea la vista en v
          galeria = v.findViewById(R.id.galeria);
          video = v.findViewById(R.id.videoView);
          // ...
          ((ViewPager) collection).addView(v, 0);
          return v;
      }

      Espero que esto solucione tu problema.

      Saludos

  • Alberto

    Gracias, acabo de probarlo y si me solucionó mis problemas ^_^

    aunque tuve que hacer unas pequeñas modificaciones
    vView = ((VideoView) video);
    vView.setVideoURI(Uri.parse(vSource2));
    vView.start();

    casteando a la view el tipo de objeto, muchas gracias como siempre, una gran ayuda rápida y eficiente ^_^

  • katalan91

    Buenas,

    Primero felicitarte por el gran post que te has currado, gracias a ti lo he conseguido entender.

    Pareceré idiota, pero cuando tengo que meter la librería mediante un proyecto nuevo a partir de código, me genera un proyecto que (salvo por los directorios típicos) no contiene nada, ninguna clase ni recurso. Por lo que luego no puedo añadirlo a mi proyecto.

    Que estoy haciendo mal?

    Gracias y un saludo

    • FedeProEx | Redactor

      Muchas gracias por las felicitaciones.

      El problema que comentas me ocurre algunas veces, parece ser que eclipse no importa bien el proyecto. Lo que tienes que hacer es copiar tu esos ficheros a mano, sobrescribiendo las carpetas vacías que están y luego refrescando el proyecto en eclipse (botón derecho sobre el proyecto y eligiendo refresh)

      Espero que esto solucione tu problema y gracias por visitar androcode.

      Saludos!

  • brobles

    Es imposible usar este ejemplo en mac, cada vez que importo el ejemplo o creo un proyecto nuevo con el me dice que el proyecto tienen una descripcion erronea y peta….

    • FedeProEx | Redactor

      Buenas, ten en cuenta que el proyecto está con codificación UTF-8. No sé cómo se gestionará esto en el mac.

      También tienes el proyecto en:

      * http://code.google.com/p/viewpager-titles/

  • Brobles

    Gracias, he conseguido descargarlo con exito desde – > http://code.google.com/p/viewpager-titles/

    Pero ahora tengo otro error,

    El ejemplo 1 me funciona genial, pero cuando importo esto -> import com.viewpagerindicator.TitleProvider; me dice que no puede resolver ese import. Y por lo tanto el metodo:

    implements TitleProvider {
    …..
    public String getTitle(int position) {
    return “Columna ” + (position + 1);
    }
    ….

    Tambien me peta. Es curisoso pq solo es con ese import, he rebuscado pro internet sin exito ….

    Por lo que he visto en la reposicion original se ha cargado el metodo ?? https://github.com/gabrielittner/Android-ViewPagerIndicator/commit/81065a6eb23e5121346a9c616e07a57bfcdbe2cc

    Help con esto que llevo toda la semana intentando poner el madito titulo xD :)

    • FedeProEx | Redactor

      He modificado el artículo y el código de Google Code para que esté adaptado a los cambios en la librería de ViewPagerIndicator.

      Saludos!

  • carlos

    Muy buenas, estoy liado con mi proyecto fin de carrera y bien, te pongo en situacion, no soy usuario de Android, pero llevo toa la carrera programando en java y c++. bueno el proyecto ya lo llevo bastante avanzado, pero estoy ya comenzando a tener la tipica sensacion de “me siento estudpido” y mas cuando leo los comentarios de que a todos les funciona.

    A Mi NO! , es decir, si me funciona, pero aun poniendo tu codigo “el que has incluido en este post con respecto al de tu compañero” y me sigue saliendo igual!!, es decir : no me pone los tituloss!! lo de las C1, C2….etc eso si, genial.
    He comprobado los path, llevo una semana investigando y documentando acerca de la libreria que hay que usar, incluso me he estudiado tambien la de action bar , pues tengo entendido que para 4.0 se hace con ActionBar….
    en fin.

    ¿se te ocurre a que se debe el que a pesar de incluir tu codigo, me siguen sin salir los titulos?
    he cerrado eclipse y lo he vuelto a abrir, jejeje es que no se que mas puede ser! :’(

    pot cierto, de todo lo que he estado investigando por ahi estos dias, considero que es el mejor post (este y el de tu compañero) con mucha diferencia a lo que hay por ahí, es mas, no hay ningun VIDEO TUTORIAL en youtube….lo digo por si os quereis lanzar, y conseguir mas visitas!

    un saludo y gracias desde vallecas ;)

    • carlos

      ya esta solucionao, era una tonteria! ;)

      • Jon

        Cual fue la solucion? Estoyo igual que tu, no me salen los titulos por mas que he copiado todo el codigo y compila sin errores, solo salen los “c1″ “c2″ del ejemplo anterior, pero no los titulos.

  • Santiago

    Hola soy nuevo en programacion de Android, bueno tengo un problema en la ejecución de tu tutorial en el momento de crear una nueva aplicacion Android no me aparece la opcion “Create project from existing source” , si me podrias ayudar a solucionar ese problema estoy trabajando con Eclipse indigo version 20.0.3 del ADT de Android. De antemano muchas gracias

  • Ivan

    Buenos dias Fede,
    Enhorabuena por el tutorial!!! Funciona perfectamente.
    Tengo alguna duda sobre ViewPage Indicator:
    He visto que se puede usar Action Bar Sherlock con View Page Indicator pero no sé cómo hacerlo porque en la version de Jake Wharton en la carpeta library aparecen ciertas clases que utiliza ListSamples para todos los samples. Cómo puedo hacer para utilizar las dos librerias a la vez?? Conoces algun tutorial en el que lo expliquen???

    Muchas gracias de antemano Fede

    • FedeProEx

      Hola Ivan,

      No entiendo muy bien tu duda. Efectivamente ambas librerías son compatibles, sólo hay que añadirlas al proyecto de forma normal. En la entrada de Introducción a ActionBarSherlock tienes las instrucciones de cómo utilizar esta librería.

      Espero haberte ayudado, saludos!

  • Ivan

    Hola Fede,
    El uso de la libreria ABS le tengo claro, te conoci con ese tutorial jajaja
    Lo que me pasa ahora es que quiero combinar los dos y en el ejemplo de Jake Whraton la carpeta library contiene clases que llama desde la carpeta samples y como se llama igual que la mia de ABS tengo problemas de compatibilidades. Estoy buscando algun tutorial en el que se muestre el uso de ambas librerias a la vez pero no lo encuentro.
    Quiero utilizar el ABS en todas mis paginas y en una utilizar el ViewPageIndicator con el tema de los triangulos pero no soy capaz de hacerlo por mi cuenta y tp encuentro nada donde lo expliquen

    • FedeProEx

      Ah bien, jejeje. Realmente no es necesaria la carpeta samples. No necesitas hacer nada especial, crear las dos librerías como nuevos proyectos android con código existente y añadir las librerías a tu proyecto.

      • Ivan

        La carpeta library de JakeWharton-ActionBarSherlock-9598f2b la añado sin problemas pero la de Android-ViewPagerIndicator-master no me deja añadirla como nuevo proyecto android con código existente. ¿Puede q sea por el nombre?
        Gracias Fede

        • Ivan

          Si q era por tener el mismo nombre, perdona por las molestias Fede

  • Jose David

    Hola fede espero estes bien,

    de ante mano excelente post lo he seguido al pie de la letra, por cierto este link http://code.google.com/p/viewpager-titles esta caido al parecer, he tenido problemas al tratar de realizar tu post uno de ellos es que cuando añado el metodo

    @Override
    public CharSequence getPageTitle(int position) {
    return “Columna ” + (position + 1);
    }
    me pide que retire el @Override y cuando lo comentareo y trato de ejecutar el codigo me dice
    Fatal exepcion main
    12-24 03:15:13.004: E/AndroidRuntime(961): java.lang.RuntimeException: Unable to start activity ComponentInfo{es.androcode.viewpager.prueba/es.androcode.viewpager.PruebaViewPagerActivity}: java.lang.IllegalStateException: ViewPager adapter must implement TitleProvider to be used with TitlePageIndicator.
    espero me puedas colaborar muchas gracias.

    • FedeProEx

      Hola Jose David. Muchas gracias por los ánimos. He comprobado el link y parece que ya funciona. Con respecto a el error que te da tiene pinta de que estás utilizando una versión anterior de la librería de ViewPagerIndicator. Por favor, comprueba eso e intenta descargar el proyecto de ejemplo de Google code si tienes problemas.
      Saludos

  • Julio

    Hola Fede,

    Muchas gracias por el artículo y por el cuidado que pones en las respuestas.
    Una consulta que igual es una tontería, pero no doy con lo que pasa.
    Resulta que lo tengo correctamente implementado, o eso creo, me salen los títulos sobre el ViewPager, pero cuando desplazo el ViewPager… los títulos no se mueven :)
    Si pulso sobre el segundo item del indicator, por ejemplo, el viewpager si se desplaza hasta el, pero ni el viewpagerIndicator se desplaza con el viewPager ni arrastrandolo manualmente…

    No tengo ni idea del motivo.. he montado y desmontado el código 30 veces :(

    Alguna idea?

    Muchas gracias y espero que te vaya bien.

    Saludos :)

    • FedeProEx

      La verdad es que no sé a qué puede deberse. Tuve un problema similar con una versión anterior de la librería ViewPagerIndicator y el problema era que había incongruencias entre el número títulos y el número de columnas del ViewPager. Sin embargo desde que cambiaron la forma de añadir los títulos creo que no es posible que se de este caso.

      Intenta encontrar diferencias entre tu implementación y por ejemplo la que pone Jake Wharton: https://github.com/JakeWharton/Android-ViewPagerIndicator/tree/master/sample

      Espero que resuelvas tu duda y comparte si consigues hacerlo o tienes más dudas.

      Saludos!

  • Merche

    Buenas soy totalmente novata en este mundo de android, ya he hecho varias aplicaciones y comienzo a tomarle el manejo.

    Mi pregunta es la siguiente, utilizo el intellij idea 12.0.4 con maven, jboss. Cuando ejecuto el Android SDK Manager para descargar la libreria no me aparece. Tengo instalado asta android 4.0.3 con todos los extras, entre otras cosas.

    voy a tools / Manage Add-on Sites y he añadido https://github.com/JakeWharton/Android-ViewPagerIndicator

    Pero me sique sin aparecer.

    Ya se que es una pregunta muy tonta. Pero es lo que tiene ser novata.

    Gracias y felicidades por el tutorial.

    • FedeProEx

      Buenas,

      El ActionBar Sherlock no tiene relación alguna con las herramientas que proporciona el SDK de Android, ahí nunca tendrás que añadirlo. El ActionBar Sherlock es una librería de un tercero y hay que añadirla como dependencia. Si utilizas maven es más sencillo, simplemente añade la dependencia tal y como se indica en la página de ActionBar Sherlock. Una vez añadida la dependencia basta con ejecutar el proyecto (aunque a lo mejor tienes que hacer que Intellij te importe los cambios de maven, para ello botón derecho sobre el proyecto->maven->reimport).

      Saludos

  • gonzalobenoffi60

    Excelente tutorial! Venia buscando lo de fragmets y lo del estilo de los titulos!

    • FedeProEx

      ¡Muchas gracias!

  • http://www.softgoto.net Jesús cuevas

    Hola Fede un post buenísimo!!.Gracias por compartirlo.
    Espero que esto sirva por si alguien sigue teniendo problemas para enseñar los títulos a mi me ha funcionado:

    Sustituir el main.xml por este otro código:

    Un saludo.

    • http://www.softgoto.net Jesús cuevas
  • http://www.softgoto.net Jesús cuevas

    Bueno no se porque no se ve el código, fede echale un vistazo porfa, lo he posteado dos veces y no sale :-(

    • FedeProEx

      Jesús creo que no es posible por permisos, ¿podrías probar a ponerlo en pastebin.com y luego poner aquí el enlace?.

  • ENMANUEL

    como coloco un CirclePageIndecator o LinePageIndicator en la parte baja de mi Activity que no me de error??