tabhost - Tamaño del texto de las pestañas TabLayout de diseño de Android
tabs android studio material design (8)
Tengo dificultades para cambiar el tamaño del texto de las pestañas de la biblioteca de diseño tablayout (android.support.design.widget.TabLayout).
Logré cambiarlo asignando tabTextAppearance en TabLayout
app:tabTextAppearance="@style/MyTabLayoutTextAppearance"
el siguiente estilo
<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
<item name="android:textSize">14sp</item>
</style>
pero tengo 2 efectos secundarios:
1) Perdí el color de acento de la pestaña seleccionada
2) El texto de la pestaña ya no está en mayúscula.
Estaba usando Android Pie y nada parecía funcionar, así que jugué con la aplicación: atributo tabTextAppearance. Sé que no es la respuesta perfecta, pero podría ayudar a alguien.
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabTextAppearance="@style/TextAppearance.AppCompat.Caption" />
Haz lo siguiente.
1. Agregue el estilo al XML
<style name="MyTabLayoutTextAppearance" parent="TextAppearance.Design.Tab">
<item name="android:textSize">14sp</item>
</style>
2. Aplicar estilo
Encuentre el diseño que contiene el TabLayout y agregue el estilo. La línea agregada está en negrita.
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
app:tabTextAppearance="@style/MyTabLayoutTextAppearance"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Siga usando tabTextAppearance como lo hizo pero
1) para corregir el efecto secundario de la letra mayúscula, agregue textAllCap en su estilo:
<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
<item name="android:textSize">14sp</item>
<item name="android:textAllCaps">true</item>
</style>
2) para corregir el efecto secundario del color de la pestaña seleccionada, agregue en TabLayout xml los siguientes atributos de la biblioteca:
app:tabSelectedTextColor="@color/color1"
app:tabTextColor="@color/color2"
Espero que esto ayude.
Tengo un problema similar y una resolución similar:
1) tamaño
en el xml tienes TabLayout,
<android.support.design.widget.TabLayout
...
app:tabTextAppearance="@style/CustomTextStyle"
...
/>
entonces con estilo,
<style name="CustomTextStyle" parent="@android:style/TextAppearance.Widget.TabWidget">
<item name="android:textSize">16sp</item>
<item name="android:textAllCaps">true</item>
</style>
Si no desea que los caracteres en mayúscula pongan falso en "android: textAllCaps"
2) Color del texto de las pestañas seleccionadas o no seleccionadas,
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
tabLayout.setTabTextColors(getResources().getColorStateList(R.color.tab_selector,null));
} else {
tabLayout.setTabTextColors(getResources().getColorStateList(R.color.tab_selector));
}
luego en res / color / tab_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_selected="true" />
<item android:color="@color/white" />
Trabaja en las API 22 y 23 Crea este estilo:
<style name="TabLayoutStyle" parent="Base.Widget.Design.TabLayout">
<item name="android:textSize">12sp</item>
<item name="android:textAllCaps">true</item>
</style>
Y aplícalo a tu tablayout:
<android.support.design.widget.TabLayout
android:id="@+id/contentTabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/list_gray_border"
app:tabTextAppearance="@style/TabLayoutStyle"
app:tabSelectedTextColor="@color/colorPrimaryDark"
app:tabTextColor="@color/colorGrey"
app:tabMode="fixed"
app:tabGravity="fill"/>
prueba esto ... es trabajo para mí ...
en mi layout.xml he usado algo como esto ...
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
style="@style/MyCustomTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed" />
y en mi style.xml he usado algo como paz de código ...
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="android:background">YOUR BACKGROUND COLOR</item>
<item name="tabTextAppearance">@style/MyCustomTabText</item>
<item name="tabSelectedTextColor">SELECTED TAB TEXT COLOR</item>
<item name="tabIndicatorColor">SELECTED TAB INDICATOR COLOR</item>
</style>
<style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button">
<item name="android:textSize">YOUR TEXT SIZE</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">@android:color/white</item>
</style>
Espero que funcione para ti .....
<style name="MineCustomTabText" parent="TextAppearance.Design.Tab">
<item name="android:textSize">16sp</item>
</style>
El uso está en
TabLayout
como este
<android.support.design.widget.TabLayout
app:tabTextAppearance="@style/MineCustomTabText"
...
/>
TabLayout tab_layout = (TabLayout)findViewById(R.id.tab_Layout_);
private void changeTabsFont() {
Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/"+ Constants.FontStyle);
ViewGroup vg = (ViewGroup) tab_layout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildsCount = vgTab.getChildCount();
for (int i = 0; i < tabChildsCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(font);
((TextView) tabViewChild).setTextSize(15);
}
}
}
}
Este código me funciona usando tablayout. Cambiará el tamaño de las fuentes y también cambiará el estilo de fuente.
Esto también les ayudará a ustedes, por favor revisen este enlace
https://.com/a/43156384/5973946
Este código funciona para Tablayout cambiar el color del texto, el tipo de letra (estilo de fuente) y también el tamaño del texto.