viernes, 19 de abril de 2013

Action Bar (Scrollable Tabs)

Lo primero que debemos aclarar es que los Scrollable Tabs no son un elemento del Actión Bar como son las Fixed Tabs, pero debido a su similitud las incluimos dentro de la seccion Action Bar.

Las Scrollable Tabs son muy utiles debido a que pueden contener un mayor número de Tabs que las Tabs tipicas. Para acceder a la tab anterior / siguiente basta con deslizare el dedo hacia la izquierda o derecha sobre la pantalla.

Para crear estas Tabs empezaremos ayudandonos de Ecipse, para ello debemos crear una nueva actividad.


Seleccnionamos Blank Activity.


Y como Navigation Type seleccionamos Scrollable Tabs + Swipe


Tras esto finalizamos en Finish.

Una vez realizado esto iremos a la clase de la actividad (en el ejemplo MainActivity.java) en el directorio /src del proyecto.

Dentro de esta clase veremos una clase anidada SectionsPagerAdapter que herada de FragmentPagerAdapter y en la que se encuentra el siguiente codigo (o similar)

@Override
public Fragment getItem(int position) {
 // getItem is called to instantiate the fragment for the given page.
 // Return a Fragment (defined as a static inner class
 // below) with the page number as its lone argument.
 
 .......
 return fragment;
}


Dentro de este metodo indicamos que fragment se va a mostrar para cada una de las pestañas. En nuestro ejemplo las pares serán diferentes a las impares.

        Fragment fragment;
 if(position%2==0){
  fragment =new Fragmento1();
 }else{
  fragment =new Fragmento2();
 }  


Dentro de la clase MainActivity podemos programar las dos clases que contendran los fragmentos con algo como lo siguiente

 /**
  * A dummy fragment representing a section of the app, but that simply
  * displays dummy text.
  */
 public static class Fragmento1 extends Fragment {
  /**
   * The fragment argument representing the section number for this
   * fragment.
   */

  public Fragmento1() {
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
   View rootView = inflater.inflate(R.layout.fragment_tpv_dummy,
     container, false);
   
   return rootView;
  }
 }
 
 public static class Fragmento2 extends Fragment {
  /**
   * The fragment argument representing the section number for this
   * fragment.
   */

  public Fragmento2() {
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
   View rootView = inflater.inflate(R.layout.fragment_tpv_dummy1,
     container, false);
   
   return rootView;
  }
 }


Como se puede apreciar son clases muy sencillas en las que solo mostramos un layout (en un caso R.layout.fragment_tpv_dummy y en el otro R.layout.fragment_tpv_dummy1. En estos layouts en donde se creará el aspecto de nuestra pestaña para quedar algo como lo siguiente.



3 comentarios: