Cómo agregar el margen entre las pestañas en TabLayout?

¿Hay una manera de agregar el margen entre las lengüetas en un TabLayout? He intentado con el uso de un estilo personalizado para Widget.Design.TabLayout , pero hay propiedades relacionadas sólo con relleno, pero sin márgenes.

Ok compañeros, después de pasar 2-3 horas en que finalmente encontré una solución.

Si está utilizando TabLayout no hay manera de agregar márgenes a las pestañas mediante el uso de estilos y así sucesivamente. (Como @Conectando la vida con Android antes)

Pero, puedes hacerlo escribiendo un código Java. Todo en todo su código debe parecer similar a ésa:

for(int i=0; i < mTabLayout.getTabCount(); i++) { View tab = ((ViewGroup) mTabLayout.getChildAt(0)).getChildAt(i); ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) tab.getLayoutParams(); p.setMargins(0, 0, 50, 0); tab.requestLayout(); } 

Con el fin de obtener cada ficha como una vista tenemos que primero obtener el contenedor que los contiene. En este caso, TabLayout utiliza un SlidingTabStrip como un contenedor para las fichas. El SlidingTabStrip es el primer hijo del TabLayout:

 View tab = ((ViewGroup) mTabLayout.getChildAt(0)) 

Y después de este pequeño detalle, todo es bastante sencillo.

Así se establece el margen para cuatro pestañas diferentes. Puede cambiar los valores de la función setMargins (v1, v2, v3, v4) para obtener un ajuste adecuado para el número de fichas con las que está trabajando. Espero que esto ayude. Tenga en cuenta que tabHost es el objeto de TabHost que aloja diferentes pestañas con las que está trabajando.

 Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); View currentView; for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { //This code removes divider between tabs tabHost.getTabWidget().setDividerDrawable(null); tabHost.getTabWidget().getChildAt(i).setLayoutParams(new LinearLayout.LayoutParams((width/8)-2,50)); currentView = tabHost.getTabWidget().getChildAt(i); LinearLayout.LayoutParams currentLayout = (LinearLayout.LayoutParams) currentView.getLayoutParams(); currentLayout.setMargins(30, 5, 80, 0); } 

@Todor Kostov respondió bien, pero el centro de las pestañas se escapó porque la última pestaña también tiene margen.

Así que utilice mTabLayout.getTabCount() - 1 lugar de simplemente mTabLayout.getCodeCount() .

  for(int i=0; i < mTabLayout.getTabCount() - 1; i++) { View tab = ((ViewGroup) mTabLayout.getChildAt(0)).getChildAt(i); ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) tab.getLayoutParams(); p.setMargins(0, 0, 50, 0); tab.requestLayout(); } 
  • Inflando AppBarLayout con la barra de herramientas + TabLayout
  • Tamaño del texto del diseño de Android TabLayout tabs
  • ¿Cómo agregar divider en el estilo de TabLayout de android? TabLayout es nuevo en la biblioteca de soporte de diseño
  • Android TabLayout: distribuir uniformemente
  • Vista personalizada de Tablayout de Android Design no puede coincidir con el padre
  • Android TabLayout con pestaña activa siempre en el centro, al igual que en la aplicación Play Kiosco
  • TabLayout ViewPager no carga al utilizar Backstack
  • Tablayout sólo con iconos
  • ¿Cómo cambiar el título de la barra de herramientas mediante el diseño?
  • Establecer la sombra en TabLayout de Android
  • ¿Por qué parpadean los iconos / textos de las lengüetas de TabLayout al pasar entre páginas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.