web-dev-qa-db-fra.com

Comment changer la taille de la police de tabhost dans android

Comment changer la taille de la police des onglets? J'étends TabActivity pour les onglets.

26
ReNa

Vous pouvez définir des thèmes, utiliser des styles pour y parvenir:

Vous créez d'abord le thème (nom: CustomTheme) pour votre Activity dans votre res/values/styles.xml:

<style name="CustomTheme" parent="@Android:style/Theme">
    <item name="Android:tabWidgetStyle">@style/CustomTabWidget</item>
</style>
<style name="CustomTabWidget" parent="@Android:style/Widget.TabWidget">
    <item name="Android:textAppearance">@style/CustomTabWidgetText</item>
</style>
<style name="CustomTabWidgetText" 
    parent="@Android:style/TextAppearance.Widget.TabWidget">
    <item name="Android:textSize">20sp</item>
    <item name="Android:textStyle">bold</item>
</style>

Ensuite, dans votre androidManifest.xml vous spécifiez le thème ci-dessus pour votre TabActivity ou Activity contenant votre TabWidget:

<activity Android:name="MyTabActivity" Android:theme="@style/CustomTheme">

Cela vous servira avec la sortie que vous souhaitez (bien sûr, vous devez modifier la taille et le style selon vos préférences).

69
rekaszeru

Ce n'est pas joli mais essayez ce correctif sale:

TabWidget tw = (TabWidget)tabHost.findViewById(Android.R.id.tabs);
View tabView = tw.getChildTabViewAt(0);
TextView tv = (TextView)tabView.findViewById(Android.R.id.title);
tv.setTextSize(20);

ou

 //Do this to hack font size of title text
 LinearLayout ll = (LinearLayout) tabHost.getChildAt(0);
 TabWidget tw = (TabWidget) ll.getChildAt(0);

 // for changing the text size of first tab
 RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0);
 TextView lf = (TextView) rllf.getChildAt(1);
 lf.setTextSize(21);
 lf.setPadding(0, 0, 0, 6);
17
Kartik Domadiya

Légèrement généralisé:

final TabWidget tw = (TabWidget)mTabHost.findViewById(Android.R.id.tabs);
    for (int i = 0; i < tw.getChildCount(); ++i)
    {
        final View tabView = tw.getChildTabViewAt(i);
        final TextView tv = (TextView)tabView.findViewById(Android.R.id.title);
        tv.setTextSize(20);
    }
6
Martin.Martinsson

j'utilise ce morceau de code dans mon code, mais il n'a d'effet que sur le premier onglet, les 3 autres onglets sont toujours inchangés.

    TabWidget tw = (TabWidget)tabHost.findViewById(Android.R.id.tabs);
    View tabView = tw.getChildTabViewAt(0);
    TextView tv = (TextView)tabView.findViewById(Android.R.id.title);
    tv.setTextSize(10);
2
Zubair