Sei sulla pagina 1di 35

14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

 Contacto  

 BLOG   LIBRERÍA ANDROID  COMIENZA AQUÍ

 BLOG   LIBRERÍA ANDROID  COMIENZA AQUÍ

TabLayout: ¿Cómo
Añadir Pestañas En
Android?
 James Revelo  Junio 27, 2015

Si deseas dividir tu contenido en subcategorías, usar un


Navigation Drawer no te será su ciente. Para ello debes usar
pestañas o tabs en tu aplicación Android.


www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 1/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Esta vez la librería de diseño no se ha olvidado de este


componente tan vital para la navegación. Nos ha entregado a los
Android Developers el TabLayout.

Ya sé que antes habíamos visto como añadir pestañas en la


action bar, pero recuerda que el nuevo concepto de App Bar
cambió todo.

Obtén
El TabLayout es un componente que facilita el cambio entre un
contenido y otro. Ahora va por separado y no se liga a la Action
Contenido
Bar directamente. Exclusivo
Aprende a
Nos provee una forma automatizada y simpli cada para
programar apps
asociarse a un View Pager, librándonos de todo el trabajo de
Android con tips y
coordinación entre los Swipe Views y las pestañas.
recursos que solo
comparto con
Veamos como añadir un Tab Layout y de qué forma integrarlo en los suscriptores de
un ejemplo completo. mi boletín privado

Descargar Proyecto Final En Android


Studio Correo

SUSCRIBIRSE
TabLayout: ¿Como Crear Pestañas En Android?

¿Qué buscas?

Buscar

  Lo Más Popular

Crear Un Web
A continuación, sigue las instrucciones para desbloquear el link Service Para
de descarga del proyecto nal: Android Con

Mysql, Php y Json
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 2/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Descargar Código ¿Cómo


Sincronizar
Sqlite Con
Mysql En
Añadir Tabs Con El TabLayout Android?

En Android Aplicación
Android Con
La lista de checkeo para Material Design nos indica de fondo que Navigation
las pestañas ahora hacen parte de la super cie de la App Bar. Drawer Y Tabs
Adicionalmente el estilo elimina las barras verticales de
separación que antes se les añadía.

NavigationView:
Navigation Drawer Con
Material Design

TabLayout:
¿Cómo Añadir
Pestañas En
Android?

Realizar
En de nición Xml simplemente incluyes dentro de la etiqueta
Peticiones
AppBarLayout el componente TabLayout :
Http Con La
Librería Volley En Android

<android.support.design.widget.AppBarLayout 
android:id="@+id/appbar"
Tutorial De
...> Bases De
<android.support.v7.widget.Toolbar Datos SQLite
android:id="@+id/toolbar" En
.../>
Aplicaciones Android
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent" Servicio Web
android:layout_height="wrap_content" /> RESTful Para
</android.support.design.widget.AppBarLayout>
Android Con
Php, Mysql y Json

El código anterior es para crear tabs prede nidas debajo de la


Tutorial De
toolbar.
Listas Y
Adaptadores
En Android

Toolbar En
Android:
Creación De

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 3/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Action Bar En Material


Design

Como ves, el TabLayout actúa como un widget normal. Así que


puedes obtener su instancia programáticamente con
findViewById() :

TabLayout tabs = (TabLayout) findViewById(R.id.tabs); 

Para añadir pestañas usa el método addTab() , el cual recibe un


nuevo objeto TabLayout.Tab . Puedes obtener una instancia
prefabricada con newTab() y luego setear su título con
setText() .

... 
tabs.addTab(tabs.newTab().setText("TELÉFONOS"));
tabs.addTab(tabs.newTab().setText("TABLETS"));
tabs.addTab(tabs.newTab().setText("PORTÁTILES"));

Lo contrario a tabs jas son las tabs deslizantes o scrollables. Su


uso es excelente cuando la cantidad de pestañas es grande, ya
que podemos movernos con un scroll.

Activa este modo con el método TabLayout.setTabMode() .


Donde debes añadir  como parámetro la bandera
TabLayout.MODE_SCROLLABLE . 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 4/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

tabs.setTabMode(TabLayout.MODE_SCROLLABLE); 

Por otro lado… ¿Cómo añadir iconos en las pestañas?

Sencillo, usa el método setIcon() :

... 
tabs.addTab(tabs.newTab().setIcon(R.drawable.ic_teléfono));
tabs.addTab(tabs.newTab().setIcon(R.drawable.ic_tablet));
tabs.addTab(tabs.newTab().setIcon(R.drawable.ic_portátil));

A groso modo ese serían las herramientas básicas para el


manejo de pestañas, sin embargo ten en cuenta los siguientes
puntos:

Procesa la
selección tabs de con la escucha
OnTabSelectedListener . Solo añádela con
setOnTabSelectedListener() y sobrescribe los
controladores.

tabs.setOnTabSelectedListener( 
new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// ...
}

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 5/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
@Override
public void onTabUnselected(TabLayout.Tab tab) {
// ...
}

@Override
public void onTabReselected(TabLayout.Tab tab) {
// ...
}
}
);

Si deseas que un ViewPager escuche el cambio de


pestañas usa TabLayout.TabLayoutOnPageChangeListener .

ViewPager viewPager = ...; 


TabLayout tabs = ...;
viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeLis

Puedes poblar las pestañas en conjunto de las secciones de


un ViewPager con setTabsFromPagerAdapter() .
Es posible ahorrarse la coordinación entre los eventos y la
población de pestañas con el método
setupWithViewPager() . Esto lo veremos en el siguiente
ejemplo.

Crear Proyecto En Android


Studio
Paso #1. Inicia Android Studio y crea un nuevo proyecto en File >
New > New Project… con el nombre de “Tricky Market“. Como
viste en el video, esta aplicación es una tienda online de
tecnología.

Selecciona una actividad en blanco Blank Activity y con rma.

Paso #2. Dirígete al archivo build.gradle y copia las


dependencias del siguiente código:

build.gradle 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 6/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

dependencies { 
...
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:design:22.2.0'
compile 'com.github.bumptech.glide:glide:3.6.0'
compile 'com.android.support:cardview-v7:22.2.0'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
}

Es necesario añadir la librería GridView With Header And


Footer  (u otra que te guste), ya que pondremos un ítem de
cabecera dentro de la grilla.

Paso #3. Abre el archivo /res/values/strings.xml e inserta las


siguientes cadenas:

strings.xml


www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 7/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

<resources> 
<string name="app_name">Trick Market</string>

<string name="title_section1">Teléfonos</string>
<string name="title_section2">Tablets</string>
<string name="title_section3">Portátiles</string>

<string name="action_settings">Settings</string>
<string name="action_shop">Carrito De Compras</string>
</resources>

Paso #4. De ne los colores del diseño con Material Design en


/res/values/colors.xml de la siguiente forma:

colors.xml

<?xml version="1.0" encoding="utf-8"?> 


<resources>
<color name="window_background">#EEEEEE</color>

<color name="primaryColor">#8BC34A</color>
<color name="primaryDarkColor">#689F38</color>
<color name="accentColor">#FAD317</color>
</resources>

Paso #5.  Modi ca el estilo de la aplicación desde el archivo


/res/values/styles.xml con los colores que acabas de de nir:

styles.xml

<resources> 
<style name="Theme.TrickMarket" parent="Base.AppTheme" />

<style name="Base.AppTheme" parent="Theme.AppCompat.Light.NoAct


<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item
<item name="colorAccent">@color/accentColor</item>

<item name="android:windowBackground">@color/window_backgro
</style>

</resources>

Paso #6.  Crea las dimensiones de abajo en tu archivo


/res/values/dimens.xml.

dimens.xml 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 8/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

<resources> 
<!-- Default screen margins, per the Android Design guidelines.
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>

<dimen name="size_fab">56dp</dimen>
<dimen name="fab_margin">16dp</dimen>

<dimen name="badge_text_size">10sp</dimen>

<dimen name="card_margin">16dp</dimen>

<dimen name="grid_item_text_size">11sp</dimen>
<dimen name="grid_view_padding">5dp</dimen>
<dimen name="grid_item_image_size">90dp</dimen>
</resources>

Paso #7. A continuación descarga los drawables e imágenes


para la aplicación y cópialas en tu directorio /res.

Aunque en el anterior archivo te entrego los iconos, puedes


descargar gran variedad desde la página Material Design Icons.

Crear GridView Con Header


View
Paso #8. Crea una nueva clase java llamada Product.java. Esta
representará el POJO para poblar el grid view  con productos de
tecnología, como tablets, smartphones y portátiles.

Solo tendremos en cuenta el nombre, la descripción, el precio, el


rating o valoración y la imagen asociada al producto.

/** 
* POJO de un producto
*/
public class Product {
/**
* Nombre del producto
*/
private String nombre;
/**
* Especificaciones del producto
*/
private String descripcion;
/**
* Precio del producto
*/
private String precio; 
/**
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 9/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
* Valoraciones del producto
*/
private float rating;
/**
* Identificador de la imagen para miniatura
*/
private int idThumbnail;

public Product(String nombre, String descripcion, String precio


this.nombre = nombre;
this.descripcion = descripcion;
this.precio = precio;
this.rating = rating;
this.idThumbnail = idThumbnail;
}

public Product() {
}

public String getNombre() {


return nombre;
}

public String getDescripcion() {


return descripcion;
}

public String getPrecio() {


return precio;
}

public float getRating() {


return rating;
}

public int getIdThumbnail() {


return idThumbnail;
}
}

Paso #9. Ahora añade una clase llamada Products.java. Su


propósito es representar el modelo u origen de datos de todos
los productos que tendrá la aplicación.

/** 
* Datos de prueba para las pestañas
*/
public class Products {

private static Product[] telefonos = {


new Product(
"Hisense HS-U98",
" 4Gb ROM, 1GB RAM, Camara 8Mpx.",
"$167 USD",
3.1f,
R.drawable.smartphone_hisense_hs_u98),
new Product(
"DarkFull",
" 16Gb ROM, 2GB RAM, Camara 13Mpx.",
"$295 USD",
4.0f,
R.drawable.smartphone_darkfull),
new Product(
"Moto G", 
" 4Gb Rom, 1GB RAM, Camara 13Mpx.",
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 10/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
"$189.9 USD",
4.6f,
R.drawable.smartphone_motog),
new Product(
"BQ Aquaris 5 HD",
" 16Gb ROM, 1GB RAM, Camara 8Mpx.",
"$199.9 USD",
3.0f,
R.drawable.smartphone_bq_aquaris_5),
new Product(
"Aquaris 5.7",
" 16Gb ROM, 2GB RAM, Camara 13Mpx.",
"$259.9 USD",
4.6f,
R.drawable.smartphone_aquaris_57),

new Product(
"Wiko Rainbow",
" 4Gb ROM, 1GB RAM, Camara 8Mpx.",
"$169 USD",
4.1f,
R.drawable.smartphone_wiko_rainbow),

new Product(
"Hisense HS-U980",
" 8Gb ROM, 1GB RAM, Camara 8Mpx.",
"$203.9 USD",
2.8f,
R.drawable.smartphone_hisense_hs_u980)

};

private static Product[] tablets = {


new Product(
"Apple iPad Air 2",
"iOS 8.1",
"$448 USD",
5.0f,
R.drawable.tablet_apple_ipad_air_2),
new Product(
"Samsung Galaxy Tab S 8.4",
"Android 4.4 Kitkat",
"$431 USD",
4.0f,
R.drawable.tablet_samsung_galaxy_tab_s_84),
new Product(
"Lenovo ThinkPad 8",
"Windows 8.1",
"$390 USD",
4.6f,
R.drawable.tablet_lenovo_thikpad_8),
new Product(
"Samsung Galaxy Pro 8.4",
"Android",
"$299 USD",
3.0f,
R.drawable.tablet_galaxy_tab_pro_84),
new Product(
"Amazon Kindle Fire HDX 8.9",
"Fire OS",
"$379 USD",
3f,
R.drawable.tablet_amazon_kindle_fire_hdx),

new Product(
"Nvidia Shield Tablet",
"Android 4.4 Kitkat",
"$375 USD",
4.8f,
R.drawable.tablet_nvidia_shield),

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 11/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

new Product(
"ASUS Transformer Pad Infinity TF700",
"Android 4.2 Jelly Bean",
"$509 USD",
4f,
R.drawable.tablet_asus_transformer_pad_infinity
};

private static Product[] portatiles = {


new Product(
"Dell Latitude 12",
"Model No: 7204",
"$6474 USD",
5.0f,
R.drawable.portatil_latitude_12_rugged),
new Product(
"Alienware 17 R1 Flagship",
"Gaming",
"$3849 USD",
4.0f,
R.drawable.portatil_alienware_17_flagship),
new Product(
"MSI GT80 Titan SLI",
"Gaming",
"$3299 USD",
4.6f,
R.drawable.portatil_msi_gt80_titan),
new Product(
"ASUS ROG G751YJ-DH72X",
"Gaming",
"$2999 USD",
3.0f,
R.drawable.portatil_asus_rog_g751jy),
new Product(
"Toshiba X70-AST3G26",
"All-Purpose",
"$2699 USD",
3f,
R.drawable.portatil_toshiba_x70_ast3g26),

new Product(
"Sony VAIO Duo 13",
"2-in-1",
"$2699 USD",
4.8f,
R.drawable.portatil_sony_vaio_duo_13_svd1322bpx

new Product(
"Gigabyte Aorus X3 Plus v3",
"Gaming",
"$2538 USD",
4f,
R.drawable.portatil_gigabyte_aorus_x3_plus_v3)
};

public static Product[] getTelefonos() {


return telefonos;
}

public static Product[] getTablets() {


return tablets;
}

public static Product[] getPortatiles() {


return portatiles;
}
}


www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 12/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Paso #10. Para la representación grá ca de los ítems del grid


view crea un nuevo archivo en /res/layout/ llamado
grid_item.xml y añade el código de abajo. La valoración del
artículo se representa con una rating bar.

grid_item.xml

<?xml version="1.0" encoding="utf-8"?> 


<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/card_margin"
android:layout_marginLeft="@dimen/card_margin"
android:layout_marginRight="@dimen/card_margin"
android:layout_marginTop="@dimen/card_margin"
android:orientation="vertical">

<ImageView
android:id="@+id/imagen"
android:layout_width="@dimen/grid_item_image_size"
android:layout_height="@dimen/grid_item_image_size"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter" />

<TextView
android:id="@+id/nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Nombre"
android:textAppearance="?android:attr/textAppearanceSma
android:textColor="@android:color/black"
android:textSize="@dimen/grid_item_text_size" />

<TextView
android:id="@+id/descripcion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Descripción"
android:textAppearance="?android:attr/textAppearanceSma
android:textSize="@dimen/grid_item_text_size" />

<TextView
android:id="@+id/precio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="$ Precio"
android:textAppearance="?android:attr/textAppearanceSma
android:textColor="@color/primaryColor"
android:textSize="@dimen/grid_item_text_size" />

<RatingBar
android:id="@+id/rating"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 13/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
android:clickable="true"
android:isIndicator="true"
android:paddingTop="8dp"
android:progressTint="#FDDB39"
android:rating="3"
android:secondaryProgressTint="#FDDB39" />
</LinearLayout>
</android.support.v7.widget.CardView>

Paso #11. Crea otro layout nuevo llamado grid_header.xml y


cambia las posiciones de la siguiente forma:

grid_header.xml

<?xml version="1.0" encoding="utf-8"?> 


<android.support.v7.widget.CardView xmlns:android="http://schemas.a
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/activity_horizontal_margin">

<ImageView
android:id="@+id/imagen"
android:layout_width="@dimen/grid_item_image_size"
android:layout_height="@dimen/grid_item_image_size"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/activity_horizontal_

<TextView
android:id="@+id/nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imagen"
android:text="Nombre"
android:textAppearance="?android:attr/textAppearanceMed
android:textColor="@android:color/black" />

<TextView
android:id="@+id/descripcion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/nombre"
android:layout_alignStart="@+id/nombre"
android:layout_below="@+id/nombre"
android:text="Descripción"
android:textAppearance="?android:attr/textAppearanceSma

<TextView
android:id="@+id/precio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/descripcion"
android:layout_alignStart="@+id/descripcion"
android:layout_below="@+id/descripcion"
android:text="$ Precio"
android:textAppearance="?android:attr/textAppearanceSma 
android:textColor="?colorPrimary" />

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 14/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

<RatingBar
android:id="@+id/rating"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/precio"
android:layout_below="@+id/precio"
android:layout_gravity="center_horizontal"
android:clickable="true"
android:isIndicator="true"
android:paddingTop="8dp"
android:progressTint="#FDDB39"
android:rating="3"
android:secondaryProgressTint="#FDDB39" />
</RelativeLayout>
</android.support.v7.widget.CardView>

Crear Adaptador Para El


GridView
Paso #12. Lo siguiente es crear un adaptador personalizado
para el grid view. Para ello añade una nueva clase llamada
GridAdapter.java y pega el siguiente código.

import android.content.Context; 
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

import com.bumptech.glide.Glide;

/**
* {@link android.widget.BaseAdapter} personalizado para el gridvie
*/
public class GridAdapter extends BaseAdapter {

private final Context mContext;


private final Product[] items;

public GridAdapter(Context c, Product[] items) {


mContext = c;
this.items = items;
}

@Override
public int getCount() {
// Decremento en 1, para no contar el header view
return items.length - 1;
}

@Override
public Product getItem(int position) {
return items[position]; 
}

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 15/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View view, ViewGroup viewGrou

if (view == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVI
view = inflater.inflate(R.layout.grid_item, viewGroup,
}

Product item = getItem(position);

// Seteando Imagen
ImageView image = (ImageView) view.findViewById(R.id.imagen
Glide.with(image.getContext()).load(item.getIdThumbnail()).

// Seteando Nombre
TextView name = (TextView) view.findViewById(R.id.nombre);
name.setText(item.getNombre());

// Seteando Descripción
TextView descripcion = (TextView) view.findViewById(R.id.de
descripcion.setText(item.getDescripcion());

// Seteando Precio
TextView precio = (TextView) view.findViewById(R.id.precio)
precio.setText(item.getPrecio());

// Seteando Rating
RatingBar ratingBar = (RatingBar) view.findViewById(R.id.ra
ratingBar.setRating(item.getRating());

return view;
}
}

Paso #13. Añade un layout llamado fragment_main.xml en


/res/layout/ y defínelo de la siguiente manera.

fragment_main.xml

<in.srain.cube.views.GridViewWithHeaderAndFooter 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:horizontalSpacing="@dimen/grid_view_padding"
android:numColumns="2"
android:padding="@dimen/grid_view_padding"
android:stretchMode="columnWidth"
android:verticalSpacing="@dimen/grid_view_padding" />


www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 16/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

GridViewWithHeaderAndFooter es la variación del grid view que


viene en la librería que implementamos.

Paso #14. Ahora falta crear un fragmento con un grid view para
poblar las secciones del view pager. En nuestro caso tendremos
tres secciones: "TELÉFONOS" , "TABLETS" y "PORTÁTILES" .

Aunque podría crearse un fragmento para cada una, he decidido


por usar una estructura switch que in e la grilla con los datos
correspondientes a la sección. Solución viable, ya que el
contenido es similar.

Crea una nueva clase con el nombre de GridFragment.java e


implementala así:

import android.os.Bundle; 
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import in.srain.cube.views.GridViewWithHeaderAndFooter;

/**
* Un fragmento que contiene una grilla de productos
*/
public class GridFragment extends Fragment {
/**
* Argumento que representa el número sección al que pertenece
*/
private static final String ARG_SECTION_NUMBER = "section_numbe

/**
* Creación prefabricada de un {@link GridFragment}
*/
public static GridFragment newInstance(int sectionNumber) {
GridFragment fragment = new GridFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}

public GridFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup con
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, co

// Obtención del grid view


GridViewWithHeaderAndFooter grid =

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 17/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
(GridViewWithHeaderAndFooter) rootView.findViewById

// Inicializar el grid view


setUpGridView(grid);

return rootView;
}

/**
* Infla el grid view del fragmento dependiendo de la sección
*
* @param grid Instancia del grid view
*/
private void setUpGridView(GridViewWithHeaderAndFooter grid) {
int section_number = getArguments().getInt(ARG_SECTION_NUMB
switch (section_number) {
case 1:
grid.addHeaderView(createHeaderView(6, Products.get
grid.setAdapter(new GridAdapter(getActivity(), Prod
break;
case 2:
grid.addHeaderView(createHeaderView(6, Products.get
grid.setAdapter(new GridAdapter(getActivity(), Prod
break;
case 3:
grid.addHeaderView(createHeaderView(6, Products.get
grid.setAdapter(new GridAdapter(getActivity(), Prod
break;
}
}

/**
* Crea un view de cabecera para mostrarlo en el principio del
*
* @param position Posición del item que sera el grid view dent
* @param items Array de productos
* @return Header View
*/
private View createHeaderView(int position, Product[] items) {

View view;

LayoutInflater inflater = getActivity().getLayoutInflater()


view = inflater.inflate(R.layout.grid_header, null, false);

Product item = items[position];

// Seteando Imagen
ImageView image = (ImageView) view.findViewById(R.id.imagen
Glide.with(image.getContext()).load(item.getIdThumbnail()).

// Seteando Nombre
TextView name = (TextView) view.findViewById(R.id.nombre);
name.setText(item.getNombre());

// Seteando Descripción
TextView descripcion = (TextView) view.findViewById(R.id.de
descripcion.setText(item.getDescripcion());

// Seteando Precio
TextView precio = (TextView) view.findViewById(R.id.precio)
precio.setText(item.getPrecio());

// Seteando Rating
RatingBar ratingBar = (RatingBar) view.findViewById(R.id.ra
ratingBar.setRating(item.getRating());

return view;
}
}

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 18/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Importante resaltar que:

Se creó el método createHeaderView() para in ar un view


con el layout grid_header.xml.
El método addHeaderView() añade el header al GridView .

Añadir Notificación Con


Contador En Action Button
Paso #15. El siguiente paso es crear el menú de la Toolbar
dentro de la carpeta /res/menu con el nombre de
menu_main.xml.

menu_main.xml


<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
<item
android:id="@+id/action_shop"
android:icon="@drawable/notification_drawable"
android:orderInCategory="1"
android:title="@string/action_shop"
app:showAsAction="ifRoom" />
</menu>

Paso #16. Ahora crea un nuevo archivo en /res/drawable/


llamado noti cation_drawable.xml. Este será usado para crear
el icono del carrito de compras con una noti cación circular en
su parte superior.

<?xml version="1.0" encoding="utf-8"?> 


<layer-list xmlns:android="http://schemas.android.com/apk/res/andro
<item
android:id="@+id/ic_notification"
android:drawable="@drawable/ic_cart"
android:gravity="center" /> 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 19/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
<!-- Insignia flotante -->
<item
android:id="@+id/ic_badge"
android:drawable="@drawable/ic_cart" />
</layer-list>

Paso #17. Lo siguiente es crear una nueva clase llamada


BadgeDrawable.java que extienda de Drawable . Con ella
dibujaremos el círculo sobre el recurso creado previamente.

Este procedimiento para decorar un action button con una


noti cación, está basado en el artículo de Jesse Hendrickson
denominado “Dynamically add air to ActionBar MenuItems”. De
verdad es muy interesante y te recomiendo que lo leas.

BadgeDrawable.java

import android.content.Context; 
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Typeface; 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 20/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
import android.graphics.drawable.Drawable;

/**
* Drawable con un contador flotante
*/
public class BadgeDrawable extends Drawable {

private float mTextSize;


private Paint mBadgePaint;
private Paint mTextPaint;
private Rect mTxtRect = new Rect();

private String mCount = "";


private boolean mWillDraw = false;

public BadgeDrawable(Context context) {


mTextSize = context.getResources().getDimension(R.dimen.bad

mBadgePaint = new Paint();


mBadgePaint.setColor(Color.RED);
mBadgePaint.setAntiAlias(true);
mBadgePaint.setStyle(Paint.Style.FILL);

mTextPaint = new Paint();


mTextPaint.setColor(Color.WHITE);
mTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
mTextPaint.setTextSize(mTextSize);
mTextPaint.setAntiAlias(true);
mTextPaint.setTextAlign(Paint.Align.CENTER);
}

@Override
public void draw(Canvas canvas) {
if (!mWillDraw) {
return;
}

Rect bounds = getBounds();


float width = bounds.right - bounds.left;
float height = bounds.bottom - bounds.top;

// Position the badge in the top-right quadrant of the icon


float radius = ((Math.min(width, height) / 2) - 1) / 2;
float centerX = width - radius - 1;
float centerY = radius + 1;

// Draw badge circle.


canvas.drawCircle(centerX, centerY, radius, mBadgePaint);

// Draw badge count text inside the circle.


mTextPaint.getTextBounds(mCount, 0, mCount.length(), mTxtRe
float textHeight = mTxtRect.bottom - mTxtRect.top;
float textY = centerY + (textHeight / 2f);
canvas.drawText(mCount, centerX, textY, mTextPaint);
}

/*
Sets the count (i.e notifications) to display.
*/
public void setCount(int count) {
mCount = Integer.toString(count);

// Only draw a badge if there are notifications.


mWillDraw = count > 0;
invalidateSelf();
}

@Override
public void setAlpha(int alpha) {
// do nothing
}

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 21/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
@Override
public void setColorFilter(ColorFilter cf) {
// do nothing
}

@Override
public int getOpacity() {
return PixelFormat.UNKNOWN;
}
}

Paso #18. A continuación crea una clase llamada Utils.java. La


idea es añadirle un método estático llamado setBadgeCount()
para asignar el valor del contador de la noti cación.

import android.content.Context; 
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;

/**
* Clase de utilidades
*/
public class Utils {

public static void setBadgeCount(Context context, LayerDrawable

BadgeDrawable badge;

// Reusar drawable
Drawable reuse = icon.findDrawableByLayerId(R.id.ic_badge);
if (reuse != null && reuse instanceof BadgeDrawable) {
badge = (BadgeDrawable) reuse;
} else {
badge = new BadgeDrawable(context);
}

badge.setCount(count);
icon.mutate();
icon.setDrawableByLayerId(R.id.ic_badge, badge);
}
}

Paso #19. Ve a /res/layout/ y modi ca el layout de la actividad


principal. Es importante usar un CoordinatorLayout para el
botón otante que usaremos en la parte inferior derecha.
También por si  quieres esconder la Toolbar y dejar jas las
pestañas al realizar scrolling.

activity_main.xml


<android.support.design.widget.CoordinatorLayout xmlns:android="htt
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator" 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 22/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>

<!-- FAB -->


<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="@dimen/size_fab"
android:layout_height="@dimen/size_fab"
android:layout_margin="@dimen/fab_margin"
android:onClick="onFabClick"
android:src="@drawable/ic_search"
app:borderWidth="0dp"
app:elevation="@dimen/fab_elevation"
app:layout_anchor="@id/pager"
app:layout_anchorGravity="bottom|right" />
</android.support.design.widget.CoordinatorLayout>

Paso #20. Ahora abre el archivo MainActivity.java  y modifícalo


con el código de abajo. Ten en cuenta que debes crear un
FragmentPagerAdapter para el ViewPager .

Luego relaciona el TabLayout con el view pager  a través del


método setupWithViewPager() para in ar las tres pestañas
basada en secciones.

import android.graphics.drawable.LayerDrawable; 
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import
import
android.support.v4.view.ViewPager;
android.support.v7.app.ActionBar;

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 23/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {


ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

setToolbar(); // Añadir la toolbar

// Setear adaptador al viewpager.


mViewPager = (ViewPager) findViewById(R.id.pager);
setupViewPager(mViewPager);

// Preparar las pestañas


TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
tabs.setupWithViewPager(mViewPager);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.action_shop);

// Obtener drawable del item


LayerDrawable icon = (LayerDrawable) item.getIcon();

// Actualizar el contador
Utils.setBadgeCount(this, icon, 3);

return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();

if (id == R.id.action_shop) {
showSnackBar("Carrito de compras");
return true;
}

return super.onOptionsItemSelected(item);
}

/**
* Muestra una {@link Snackbar} prefabricada
*
* @param msg Mensaje a proyectar
*/
private void showSnackBar(String msg) {
Snackbar.make(findViewById(R.id.fab), msg, Snackbar.LENGTH_
}

/**
* Establece la toolbar como action bar
*/
private void setToolbar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar(); 
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 24/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
if (ab != null) {
// Poner ícono del drawer toggle
ab.setHomeAsUpIndicator(R.drawable.ic_menu);
ab.setDisplayHomeAsUpEnabled(true);
}

/**
* Crea una instancia del view pager con los datos
* predeterminados
*
* @param viewPager Nueva instancia
*/
private void setupViewPager(ViewPager viewPager) {
SectionsPagerAdapter adapter = new SectionsPagerAdapter(get
adapter.addFragment(GridFragment.newInstance(1), getString(
adapter.addFragment(GridFragment.newInstance(2), getString(
adapter.addFragment(GridFragment.newInstance(3), getString(
viewPager.setAdapter(adapter);
}

/**
* Método onClick() del FAB
*
* @param v View presionado
*/
public void onFabClick(View v) {
showSnackBar("Buscar producto");
}

/**
* Un {@link FragmentPagerAdapter} que gestiona las secciones,
* títulos de las pestañas
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter
private final List<Fragment> mFragments = new ArrayList<>()
private final List<String> mFragmentTitles = new ArrayList<

public SectionsPagerAdapter(FragmentManager fm) {


super(fm);
}

@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}

@Override
public int getCount() {
return mFragments.size();
}

public void addFragment(Fragment fragment, String title) {


mFragments.add(fragment);
mFragmentTitles.add(title);
}

@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}

Paso #21. Por último corre la aplicación en Android Studio para



ver nuestra tienda online de tecnología Trick Market.
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 25/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Conclusión
El TabLayout permite cambiar entre views de forma fácil y
amigable.

Hemos visto cómo crear un Grid View e integrar distintos


productos de una tienda online en cada sección de un View
Pager.

Aunque no es un ejemplo completo, muestra como las tabs


pueden optimizar la transición entre cada segmento de
contenido.

Lo ideal sería realizar peticiones Http desde Android hacia un


servidor externo, que almacene la información de datos reales.

¿Cuál es el siguiente paso?

Aprender a usar transiciones  entre actividades y generar


animaciones en las interacciones de distintos views.

Ícono de la aplicación

www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 26/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

Comentarios Comunidad 
1 Acceder

 Recomendar 3 t Tweet f Compartir

Ordenar por los mejores

Únete a la conversación...

INICIAR SESIÓN CON


O REGISTRARSE CON DISQUS ?

Nombre

Javier Augusto Piñeros Pareja • hace 3 años


buenos días, me pueden por favor ayudar a descargar el
código fuente, el enlace no aparece activo, ya me registré
con google, gracias!
2△ ▽ • Responder • Compartir ›

James Moderador > Javier Augusto Piñeros Pareja


• hace 3 años
Arreglado amigo
1△ ▽ • Responder • Compartir ›

Javier Augusto Piñeros Pareja > James


• hace 3 años
Gracias James!
△ ▽ • Responder • Compartir ›

Pedro Barreto Gonzalez (Toninh • hace 3 años • edited


Como añadir estas TABs en un fragment... Y al escoger un
ítem llame a otro fragment? 
3△ ▽ • Responder • Compartir ›
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 27/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
3 Responder Compartir ›

MagoMtz • hace 2 años


disculpa, no funciona al hacer swipe o dar click no hace
nada
△ ▽ • Responder • Compartir ›

santiagovas • hace 2 años


Excelente documentación me ayudo bastante ! Bien
△ ▽ • Responder • Compartir ›

Merinia • hace 2 años


Hola James, he seguido todos los pasos y hasta el paso
19 todo va bien, pero en el paso 20 al aplicar los cambios
en el MainActivity y correr la app, muestra error de que la
app se ha detenido "Unfortunately, Tricky Market has
stopped", revisé el MainActivity pero parece que todo esta
correcto. Alguna sugerencia? Gracias!
△ ▽ • Responder • Compartir ›

Jesuso Marfil • hace 3 años


buen dia, como podria implentar el OnItemClicListener en
el gridView?
△ ▽ • Responder • Compartir ›

Jessica • hace 3 años


Muy buenos tutoriales :) Me sirven de mucho, ¡gracias!
△ ▽ • Responder • Compartir ›

Jesuso Marfil • hace 3 años


hay en error en el link de descarga aparece asi:
[fancy_box id=5 linked_cu=5958]Click AQUÍ para
descargar código completo.[/fancy_box]
△ ▽ • Responder • Compartir ›

James Moderador > Jesuso Marfil • hace 3 años

Arreglado amigo!
△ ▽ • Responder • Compartir ›

Maurel Reyes • hace 3 años


Tengo un problema espero me puedan ayudar.
Estoy implementando un NavigationDrawer, Fragmentos y
Tabs.
Tengo 2 opciones. ofertas y catálogos.
Por defecto carga el fragmento de ofertas y todo bien. trato
de cambiar al fragmento de catalogo e igual cargan la lista
de artículos. en ambos fragmentos tengo tabs. el problema
esta que cuando intento cambiar al fragmento de ofertas
no se me muestran la lista de ofertas.

El error esta en que desde el método onCreateView del 


fragmento cargo el catalogo de ofertas Al tratar de
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 28/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
fragmento cargo el catalogo de ofertas. Al tratar de
regresar a este fragmento ya no se llama el método
onCreateView por lo tanto tampoco se llama el método
desde el que cargo la lista de ofertas. Alguna ayuda para
solucionar mi problema? Muchas Gracias y muy buen post

Saludos!!
△ ▽ • Responder • Compartir ›

Rafael • hace 3 años


Como hacer para que cuando haga click en una pestaña
me salgan otras 2 bajo?
△ ▽ • Responder • Compartir ›

Oscar • hace 3 años


buenas gente, estoy haciendo un trabajo de fin de grado
que consiste en un app que aglutine todos los sensores
disponibles en el smartphone (sonido, luz, presion,
acelerometro... etc) y uno de los activities utilice tabs para
mostrar todos con scroll horizontal para que todos
aparezcan en la misma ventana, pero dependiendo el tab,
muestre un layout tab distinto.

Hasta ahi, todo correcto, pero nose donde


colocar/nombrar/referenciar el código java para cada uno
de los tabs, nose si me he explicado bien... pero necesito
ayuda, gracias!!
△ ▽ • Responder • Compartir ›

Luis Troya • hace 3 años • edited


Excelente tutorial, me ayudo a implementar los tabs con el
navigation drawer de una manera muy sencilla
△ ▽ • Responder • Compartir ›

ferje • hace 3 años


hola quisiera saber como instalar la libreria GridView With
Header And Footer ??? ayuda por fabor
△ ▽ • Responder • Compartir ›

Edgar Aguilar • hace 3 años


BUENAS NOCHES QUISIERA SABER O SI ALGUIEN ME
PUEDE AYUDAR, ME GUSTARÍA SABER COMO
ASIGNARLE FUNCIONALIDAD A LAS IMÁGENES
DENTRO DEL TAB,

OSEA QUE CUANDO SELECCIONE UNA OPCIÓN ME


MANDE A UN VÍDEO O A OTRA ACTIVIDAD.

AGRADEZCO SU ATENCIÓN Y SI ME PUEDEN AYUDAR


MUCHO MEJOR GRACIAS.
△ ▽ • Responder • Compartir ›

Luis Troya > Edgar Aguilar • hace 3 años
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 29/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
Luis Troya > Edgar Aguilar • hace 3 años
Agregale un onClick al ImageView
1△ ▽ • Responder • Compartir ›

Marlon Arteaga Morales • hace 3 años


Una pregunta desde que versión de android puedo
implementar esto de TabLayout, por favor si alguien
respondiera mi duda.
Cambio y Fuera
△ ▽ • Responder • Compartir ›

Luis Troya > Marlon Arteaga Morales • hace 3 años


Desde la version 2.3 en adelante
△ ▽ • Responder • Compartir ›

User X • hace 3 años • edited


James, espero me puedas ayudar en el paso #5.

Este es el código que das para modificar:

<style name="Theme.TrickMarket"
parent="Base.AppTheme"/>

<style name="Base.AppTheme"
parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primaryColor</item>
<item
name="colorPrimaryDark">@color/primaryDarkColor</item
<item name="colorAccent">@color/accentColor</item>

<item
name="android:windowBackground">@color/window_backg
</style>

Y este es el código que tengo por defecto:

ver más

△ ▽ • Responder • Compartir ›

Daniel • hace 3 años • edited


hola buenas tarde, tengo un problema con los tablayout :
tengo 3 tabs, en cada uno hago peticiones post usando la
libreria volley y cargo la informacion a un listview. Todo va
bien en las peticiones pero el detalle está en que, por
ejemplo, si estoy en el tab 1 y cambio al tab 3, en este
ultimo se vuelve ha realizar la peticion del tab 1 y cuando
vuelvo al tab 1, los datos en el listivew se han duplicado:
practicamente es como si el tab 1 se hubiese reiniciado sin
que este en él. Facilmente puedo borrar la hacer
listview.clear() para que no se duplique pero lo que no
quiero esque el fragment del tab se reinicie. Esto ocurre
con los tres tabs, cambiando entre uno y uno los otros se 
reinician. SE QUE ES UN PROBLEMA CON LOS TABS Y
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 30/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?

MAS NO CON LAS PETICIONES. espero puedas


ayudarme

ESTO COLOCO EN LA ACTIVIDAD DONDE SE ALOJAN


LOS TABS

ver más

△ ▽ • Responder • Compartir ›

Luis Troya > Daniel • hace 3 años


Tienes que limpiar la data en adapter y llamar el
metodo notifyDataSetChanged()
△ ▽ • Responder • Compartir ›

Alberto Cruz • hace 3 años


hola buenas tardes oyes solo para preguntarte si quisiera
aplicar esta misma aplicacion para mi negocio como
puedo lograr que se enlace con una base de datos para
que me saque toda la informacion de la base de datos
incluyendo fotos ,,,,,,,,, ?
△ ▽ • Responder • Compartir ›

James Moderador > Alberto Cruz • hace 3 años

Hola Alberto, no comprendo tu pregunta. Supongo


que la respuesta es que uses una base de datos
SQLite para obtener los datos?

Puedes explicarte mejor?


△ ▽ • Responder • Compartir ›

Rodrigo Cortes (Blue-Sens) • hace 3 años


BUENAS NOCHES QUISIERA SABER O SI ALGUIEN ME
PUEDE AYUDAR, ME GUSTARÍA SABER COMO
ASIGNARLE FUNCIONALIDAD A LAS IMÁGENES
DENTRO DEL TAB,

OSEA QUE CUANDO SELECCIONE UNA OPCIÓN ME


MANDE A UN VÍDEO O A OTRA ACTIVIDAD.

AGRADEZCO SU ATENCIÓN Y SI ME PUEDEN AYUDAR


MUCHO MEJOR GRACIAS.
△ ▽ • Responder • Compartir ›

Marlon Arteaga Morales > Rodrigo Cortes (Blue-


Sens) • hace 3 años • edited

Claro sólo le tienes que dar un


Item item =(item)findViewById(R.id.idItem);
item.setOnClickListener
y Listo luego tienes que hacer el Intent del item.
startActivity(new
Intent(ActivityMain.this,SegundoMain.class);)
y va a ir al SegundoMain, osea el activity que 
quieras sería
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 31/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
quieras sería.
△ ▽ • Responder • Compartir ›

Carlos Eduardo Ramirez Pabón > Marlon


Arteaga Morales • hace 2 años

en que lugar creeo eso?????necesito eso


pronto
△ ▽ • Responder • Compartir ›

Show more replies

nano contrera • hace 3 años • edited


buenas quisiera saber como implementar con un
webservice a el tabactivity que esta deprecated , uso
GSON en mi listview que se consume de un JSON, desde
ya muchas gracias ah por cierto te puedo escribir a tu mail
quisiera saber si me puedes orientar en ciertas cosas he ir
retribuyendote por los conocimientos adquiridos desde ya
muchas gracias por los tutoriales
△ ▽ • Responder • Compartir ›

Christian Sari • hace 4 años


Una consulta, buenos dias James, una pregunta para
guiarme, quiero usar este tutorial para hacer una app con
tabs, pero cada tab envia a un contenido diferente, es
decir leera xmls o json, como puedo hacerlo asi, tengo
comprendido que debo usar fragment's diferentes? y en
cada fragment el lector o parser?.

Espero su respuesta. Gracias.


△ ▽ • Responder • Compartir ›

Raverito Stone • hace 4 años


Buen tutorial, tengo una pregunta como hago para que por
defecto aparasca el tab de X posicion y no el primero.
△ ▽ • Responder • Compartir ›

Henry Sabogal • hace 4 años


Hola, gracias por el tutorial, me ha servido bastante.
Quería preguntar como se hace para mostrar los íconos
en el tab cuando cuando se asocia con el ViewPager. Ya
utilice la función setIcon para el TabLayout pero no se
muestran. De nuevo gracias por compartir
△ ▽ • Responder • Compartir ›

dago23 • hace 4 años


hola, excelente tutorial.muy bueno la verdad.
necesitaria saber si me
podrias colaborar en la utilizacion del carrito de compras,
para que
este reciba eventos de agregar articulos y mostrando la

notificacion por
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 32/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
cada articulo agregado...seria de gran ayuda cualquier
sugerencia...Gracias!!
△ ▽ • Responder • Compartir ›

Xuelo • hace 4 años


Necesito ayuda, no consigo poblar cada pestaña
△ ▽ • Responder • Compartir ›

James Moderador > Xuelo • hace 4 años


que error te sale?
△ ▽ • Responder • Compartir ›

Xuelo • hace 4 años


Grandisimo tutorial!
No consigo descargar el código completo he retwiteado y
dado a like y nada....
△ ▽ • Responder • Compartir ›

Xuelo > Xuelo • hace 4 años


solucionado
△ ▽ • Responder • Compartir ›

Rodrigo Dámazo • hace 4 años


Hola James.. eh seguido todos tus tutoriales desde hace
un tiempo... Siento que tus aportes son muy utiles por el
echo de que usas metodos y/o herramientas actualizadas,
aunado a la explcación detalla que ofreces.

Use este tutorial para colocar tabs en mi proyecto, con la


diferencia que uso 3 fragments, correspondientes a cada
pestaña. El problema esta en que los fragments no se ven
completos (no se colocan debajo del tab layout) uso los
mismos widgets que colocas en el activity_main.xml a
excepcion del FloatingActionButton... a que crees que se
deba?


△ ▽ • Responder • Compartir ›

James Moderador > Rodrigo Dámazo • hace 4 años

Hola compañero, gracias por tu apreciación :)

De seguro es el layout y las restricciones que


tienes. Muestrame el contenido.
△ ▽ • Responder • Compartir ›

Rodrigo Dámazo > James • hace 4 años


Hola james, gracias pero afortunadamente 
ya resolvi el problema solo agrupe todo en
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 33/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
ya resolvi el problema, solo agrupe todo en
un linearlayout y los fragments ya me los
coloco debajo del tabLayout..gracias seguire
al tanto de tus aportes...
△ ▽ • Responder • Compartir ›

Show more replies

Damian Condrac • hace 4 años


Tengo una pregunta.....si pongo un boton en algun
fragment de los creados y quiero que al hacerle click sea
reemplazado por otro, como puedo hacerlo ?
△ ▽ • Responder • Compartir ›

James Moderador > Damian Condrac • hace 4 años

Hola Damian. Prueba usando


FragmentTransaction.replace() para reemplazar el
contenido del fragmento:

final FragmentTransaction ft =
getFragmentManager().beginTransaction();
ft.replace(R.id.contenedor, new
FragmentoAlterno(), "Etiqueta");
ft.commit();
△ ▽ • Responder • Compartir ›

Damian Condrac > James


• hace 4 años • edited
Gracias por contestar. Cree un rootfragment
en la primer pestaña , al hacer click voy al
segundo fragment, si apreto el boton back
vuelvo al rootfragment, Hasta ahi todo ok .
El problema es que si voy al segundo
fragment y me muevo a otra pestaña .. y
apreto el boton back no sale de la app sino
tengo que apretar 2 veces para que por mas
que este en otro tab vuelva al fragment
anterior en la otra pestaña que no esta
seleccionada.
△ ▽ • Responder • Compartir ›

Show more replies

Nicolas • hace 4 años


Hola James ,, te hago una pregunta , como puedo hacer
para que el TabLayout inicie por default en la pestaña que
yo quiera , por ejempli de tres pestañas , que inicie en la
del medio ?Gracias por los tutos
△ ▽ • Responder • Compartir ›

James Moderador > Nicolas • hace 4 años

Hola Nicolas. A vuelo de pájaro se me ocurre que 


uses el método TabLayout getTabAt() para obtener
www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 34/35
14/7/2019 TabLayout: ¿Cómo Añadir Pestañas En Android?
uses el método TabLayout.getTabAt() para obtener
la pestaña en la posición que desees y luego con el
resultado obtenido usas Tab.select() para
seleccionarla. No se si sea de ayuda mi respuesta
:v
△ ▽ • Responder • Compartir ›

CarlosCarEd > James • hace 4 años


Hola Jemes¡ Primero que nada Muchas
gracias por los tutoriales me han sido de

Premio Top 80 Mobile App Blogs de Feedspot

Hermosa Programación: +50 Tutoriales Desarrollo Android Copyright © 2019.


www.hermosaprogramacion.com/2015/06/tablayout-como-anadir-pestanas-en-android/ 35/35

Potrebbero piacerti anche