He configurado pestañas como ACTUALIZACIÓN 29/05/2015 esta publicación. Las pestañas ocupan todo el ancho de mi móvil Nexus 4, pero en la tableta nexus 7 lo colocan en el centro y no cubren el ancho de la pantalla completa.
Captura de pantalla de Nexus 7 Captura de pantalla de Nexus 4
Respuestas:
Una respuesta "más simple" prestada de Kaizie sería agregar
app:tabMaxWidth="0dp"
en suTabLayout
xml:fuente
Tuve el mismo problema y verifiqué el estilo TabLayout, y descubrí que su estilo predeterminado es el
Widget.Design.TabLayout
que tiene implementaciones diferentes (normal, horizontal y sw600dp).El que necesitamos es el de las tabletas (sw600dp) que tiene la siguiente implementación:
De este estilo usaremos " tabGravity " (cuyos valores posibles son "centro" o "relleno") usando el valor "relleno".
Pero tenemos que ir más profundo, y luego vemos que este se extiende
Base.Widget.Design.TabLayout
, cuya implementación es:Entonces, a partir de este estilo, tendremos que anular " tabMaxWidth ". En mi caso, lo configuré para
0dp
que no tenga límite.Y mi estilo se veía así:
Y luego la barra de pestañas llenará toda la pantalla de lado a lado.
fuente
Solución para desplazamiento: (TabLayout.MODE_SCROLLABLE), es decir, cuando necesite más de 2 pestañas (pestañas dinámicas)
Paso 1: style.xml
Paso 2: tu diseño xml
Paso 3: en tu Actividad / Fragmento donde sea que tengas pestañas.
fuente
addTab
y configuré el peso de cada pestaña a medida que se agregaba.override fun addTab(tab: Tab, position: Int, setSelected: Boolean) { super.addTab(tab, position, setSelected) allotEachTabWithEqualWidth() }
Para obligar a las pestañas a ocupar todo el ancho (divididas en tamaños iguales), aplique lo siguiente a la
TabLayout
vista:fuente
TabLayout
está configurado enapp:tabMode=“scrollable”
, dará como resultado que las pestañas tengan una longitud fija (las palabras largas se ajustarán) y las pestañas ya no se deslizarán, esencialmente haciendo que las pestañas se "arreglen" nuevamente.Esto es útil, debes intentarlo
fuente
trabaja para mi. Esto también tiene
xmlns:app="http://schemas.android.com/apk/res-auto"
fuente
Para mí, el siguiente código funcionó y fue suficiente.
fuente
Verifique el código a continuación para encontrar soluciones.
A continuación se muestra el código de diseño:
Tenga en cuenta que para el recuento dinámico de pestañas, no olvide llamar a setTabNumbers (tabcount).
Referencia tomada de https://medium.com/@elsenovraditya/set-tab-minimum-width-of-scrollable-tablayout-programmatic-8146d6101efe
fuente
Solución para desplazable (Kotlin)
En xml:
En Kotlin:
En mi caso, si tengo menos de 3 pestañas, asigno el mismo espacio.
Nota: Si la condición es según su requisito
fuente
¿Por qué todo ese trabajo agitado? Simplemente ponga
app:tabMode="scrollable"
su TabLayout en XML. Eso es.fuente
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
Además, esta es solo una propiedad para establecer para tabLayout, sin importar cuántas pestañas esté agregando estática o dinámica.En mi variante de este problema, tenía 3 pestañas de tamaño moderado que no ocupaban todo el ancho en las tabletas. No necesitaba que las pestañas fueran desplazables en tabletas, ya que las tabletas son lo suficientemente grandes como para mostrar las pestañas juntas sin ningún desplazamiento. Pero sí necesitaba que las pestañas fueran desplazables en los teléfonos, ya que los teléfonos son demasiado pequeños para mostrar todas las pestañas juntas.
La mejor solución en mi caso fue agregar un
res/layout-sw600dp/main_activity.xml
archivo, donde el TabLayout relevante podría tenerapp:tabGravity="fill"
yapp:tabMode="fixed"
. Pero en mi habitualres/layout/main_activity.xml
, me salíapp:tabGravity="fill"
yapp:tabMode="fixed"
, y en suapp:tabMode="scrollable"
lugar.fuente
Tenga en cuenta que también debe configurar
para llenar todo el espacio
fuente