如何在安卓中改变TabHost的字体大小

26

如何更改选项卡的字体大小? 我使用TabActivity来扩展选项卡。

4个回答

69
你可以定义主题,使用样式来实现这一点:
首先,在你的`res/values/styles.xml`中为你的`Activity`创建主题(名称为`CustomTheme`):
<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文件中,将上述主题指定为包含您的TabWidgetTabActivityActivity的主题:

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

这将为您提供所需的输出(当然,您应根据自己的喜好更改大小和样式)。


2
在Android 4.1.2模拟器中,这似乎将选项卡样式设置为我看起来有些奇怪的样式:按钮是橙色的,按下时。 (也许它应用了Android 1.0样式而不是4.1默认样式?) - sydd
2
我把它放在res下时出现了错误,但是将其放在res/values下后问题得到解决。 - Barney
2
@sydd 你应该继承自 Widget.Holo.TabWidget。 - Roel

17

虽然不太美观,但可以尝试使用这个“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);
或者

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

3
以上代码片段适用于Android 2.3及以下版本,但不适用于Android 4.0和4.1。 - Sathish

6
略微概括一下:
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
我在我的代码中使用了这段代码,但它只对第一个选项卡产生了影响,其他三个选项卡仍然没有变化。
    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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接