1. 程式人生 > >修改系統action bar字型大小、粗細、顏色等樣式的方法

修改系統action bar字型大小、粗細、顏色等樣式的方法

     Action bar字型的修改主要還是在xml檔案中完成,對actionbar字型的修改主要思路如下:
  • 根據application 的android:theme 屬性找到他的style(方便起見,我們成為app_style)定義。
  • 在style中找到name 為android:actionBarStyle 的item,找到android:actionBarStyle 對應的style(方便起見,我們成為actionbar_style)。
  • 在actionbar_style中就可以看到name為android:titleTextStyle的item,再找到對應的style(我們稱為titleText_style)
  • 在titleText_style中可以發現裡面有個定義了android:textSize的item,但是在這修該的話,不起作用,至於為什麼,希望大家補充(PS:actionbar_style、titleText_style都是SDK中定義的,不知道是不是和這個有關)
  • 既然上一個步驟型不同,但是我們可以在app_style所在的檔案中定義一個actionbar style,然後在它的item下定義action bar的樣式,具體的課參考下面的例子。
     現在我們結合一個例子來說明(以android 4.4的settings應用為例):
  1. 在AndroidManifest檔案中找到application中的屬性
    <
    application android:label ="@string/settings_label"  android:icon= "@mipmap/ic_launcher_settings"  android:taskAffinity= ""  android:theme= "@style/Theme.Settings"  android:hardwareAccelerated="true"  android:requiredForAllUsers="true"  android:supportsRtl= "true" android:name= ".Screenshot">
  2. 找到android:theme對應的style,Theme.Settings

    <style name ="Theme.Settings" parent= "@android:style/Theme.Holo">  <item name= "@*android:preferenceHeaderPanelStyle" >@style/PreferenceHeaderPanelSinglePane </item>  <item name= "@*android:preferencePanelStyle" >@style/PreferencePanelSinglePane </item>  <item name= "@*android:preferenceListStyle" >@style/PreferenceHeaderListSinglePane </item>  <item name= "@*android:preferenceFragmentListStyle" >@style/PreferenceFragmentListSinglePane </item>  <item name= "@*android:preferenceFragmentPaddingSide" >@dimen/settings_side_margin </item>  <item name= "apnPreferenceStyle">@style/ApnPreference </item>  <item name= "ic_menu_add">@drawable/ic_menu_add_dark </item>  <item name= "ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark </item>  <item name ="ic_wps">@drawable/ic_wps_dark</ item>  <item name= "wifi_signal">@drawable/wifi_signal_dark </item>  <item name= "android:actionBarStyle">@android:style/Widget.Holo.ActionBar.Solid </item>  <item name ="@android:attr/actionBarSize"> 90dp</ item>  </style >
  3. 找到android:actionBarStyle對應的style(Widget.Holo.ActionBar.Solid )。
    <style name ="Widget.Holo.ActionBar.Solid">  <item name= "android:titleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Title </item>  <item name= "android:subtitleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle </item>  <item name= "android:background">@android:drawable/ab_solid_dark_holo </item>  <item name= "android:backgroundStacked">@android:drawable/ab_stacked_solid_dark_holo </item>  <item name= "android:backgroundSplit">@android:drawable/ab_bottom_solid_dark_holo </item>  <item name= "android:divider">?android:attr/dividerVertical </item>  <item name= "android:progressBarStyle">@android:style/Widget.Holo.ProgressBar.Horizontal </item>  <item name= "android:indeterminateProgressStyle" >@android:style/Widget.Holo.ProgressBar </item>  <item name ="android:progressBarPadding"> 32dip</ item>  <item name ="android:itemPadding"> 8dip</ item>  </style >
  4. 找到android:titleTextStyle對應的style(TextAppearance.Holo.Widget.ActionBar.Title)。
    <style name ="TextAppearance.Holo.Widget.ActionBar.Title"  parent= "TextAppearance.Holo.Medium">  <item name= "android:textSize">@android:dimen/action_bar_title_text_size </item>  </style >
  5. 上面說了在TextAppearance.Holo.Widget.ActionBar.Title下面改是行不通的,可以這樣做:在Theme.Settings所在的檔案下定義
    <style name ="MyActionBarStyle" parent="@android:style/Widget.Holo.ActionBar.Solid" >  <item name= "android:titleTextStyle">@style/MyActionBar.TitleTextStyle </item> </style > <style name ="MyActionBar.TitleTextStyle"  parent= "@android:style/TextAppearance.Holo.Widget.ActionBar.Title" >  <item name ="android:textSize"> 43sp</ item>  <item name ="android:textColor"> #FF9900</ item> </style >
    然後修改<item name="android:actionBarStyle"> @style/MyActionBarStyle</item > 前後效果對比圖如下: