2011-04-26 96 views

回答

69

您可以定義主題,使用樣式來實現這一目標:

首先創建主題(名: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您指定上面的主題,爲您TabActivityActivity包含您TabWidget

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

這將有助於你與你想要的(當然你應該改變的大小和樣式的輸出你的偏好)。

+2

在Android 4.1.2模擬器中,這似乎將選項卡樣式設置爲一些奇怪的看着我:按下時按鈕是橙色的。 (也許它應用一些Android 1.0風格而不是4.1默認的風格) – sydd 2012-12-05 19:05:16

+2

當我把它放在'res'下時出錯了,但是把它放在'res/values'下面。 – Barney 2013-02-26 12:12:56

+2

@sydd你應該派生自Widget.Holo.TabWidget – Roel 2014-11-04 12:12:22

16

它不漂亮,但試試這個骯髒的修復:

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

第二個爲我工作 - 謝謝 – sami 2011-09-23 08:46:30

+3

上面的代碼片段工作在2.3以下的android。不適用於Android 4.0和4.1。 – Sathish 2012-10-25 10:02:56

+1

這不起作用。 – princepiero 2013-09-09 08:10:53

4

稍微概括:

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

這對我來說工作得很好!感謝分享。 – Mohammad 2015-12-18 19:22:17

2

我使用這段代碼在我的代碼,但它僅在第一個選項卡影響的其他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);