How to change the font size of tabhost in android

后端 未结 4 1067
盖世英雄少女心
盖世英雄少女心 2020-11-27 15:23

How can the font size of the tabs be changed? I extend TabActivity for the tabs.

相关标签:
4条回答
  • 2020-11-27 15:53

    You can define themes, use styles to achieve this:

    First you create the theme (name:CustomTheme) for your Activity in your 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>
    

    Then in your androidManifest.xml you specify the theme above for your TabActivity or Activity containing your TabWidget:

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

    This will serve you with the output you want (of course you should change the size and style for your preference).

    0 讨论(0)
  • 2020-11-27 16:01

    Slightly generalized:

    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);
        }
    
    0 讨论(0)
  • 2020-11-27 16:04

    i use this piece of code in my Code but it effect only on first Tab the other 3 Tabs are still unchanged.

        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);
    
    0 讨论(0)
  • 2020-11-27 16:11

    Its not pretty but try this Dirty Fix :

    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);
    

    or

     //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);
    
    0 讨论(0)
提交回复
热议问题