Как изменить размер шрифта tabhost в андроиде - PullRequest
26 голосов
/ 26 апреля 2011

Как можно изменить размер шрифта вкладок?Я расширяю TabActivity для вкладок.

Ответы [ 4 ]

69 голосов
/ 26 апреля 2011

Вы можете определить темы, использовать стили для достижения этой цели:

Сначала вы создаете тему (имя: CustomTheme) для вашего Activity в вашем 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>

Затем в вашем androidManifest.xml вы указываете тему выше для вашего TabActivity или Activity, содержащего ваше TabWidget:

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

Это даст вам желаемый результат (конечно, вы должны изменить размер и стиль по своему вкусу).

17 голосов
/ 26 апреля 2011

Это не красиво, но попробуйте это Грязное Исправление:

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

или

 //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);
6 голосов
/ 01 октября 2014

Слегка обобщенно:

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);
    }
2 голосов
/ 23 мая 2015

Я использую этот фрагмент кода в своем коде, но он действует только на первую вкладку, остальные 3 вкладки остаются неизменными.

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