web-dev-qa-db-ja.com

androidでtabhostのフォントサイズを変更する方法

タブのフォントサイズを変更するにはどうすればよいですか?タブのTabActivityを拡張します。

26
ReNa

テーマを定義し、スタイルを使用してこれを実現できます。

最初に、res/values/styles.xmlCustomThemeのテーマ(名前:Activity)を作成します。

<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">

これにより、必要な出力が得られます(もちろん、好みに合わせてサイズとスタイルを変更する必要があります)。

69
rekaszeru

それはきれいではありませんが、この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);
17
Kartik Domadiya

少し一般化:

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

私は自分のコードでこのコードを使用しますが、最初のタブにのみ影響し、他の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);
2
Zubair