为ActionBarSherlock导航选项卡设置自定义样式属性会中断默认主题

时间:2013-05-15 07:00:27

标签: android actionbarsherlock android-theme

我正在尝试自定义ActionBarSherlock中的导航标签。如果我只是为导航选项卡设置背景,则选项卡的现有文本样式将丢失。文本缩小并在选项卡中左对齐。我的理解是我正在设置一个属性,它被合并到父主题。它似乎完全取代了父主题。我是否必须设置所有属性才能在导航标签中自定义一项内容?

以下是代码:

/res/values/themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyTheme" parent="Theme.Sherlock.Light">
    <item name="android:dither">true</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarStyle</item>
    <item name="actionBarTabStyle">@style/MyActionBarStyle</item>
  </style>
  <style name="MyActionBarStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar">
    <item name="android:background">@drawable/my_new_bg</item>
  </style>
</resources>

的AndroidManifest.xml:

...
<application
        android:name=".MyApplication"
        android:hardwareAccelerated="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:description="@string/app_desc"
        android:theme="@style/MyTheme" >
...

2 个答案:

答案 0 :(得分:1)

如果查看样式Widget.Sherlock.Light.ActionBar.TabBar的属性,您会注意到没有任何与继承相关的文本。

<style name="Widget.Sherlock.ActionBar.TabBar" parent="Widget">
    <item name="android:divider">?attr/actionBarDivider</item>
    <item name="android:showDividers">middle</item>
    <item name="android:dividerPadding">12dip</item>
</style>
<style name="Widget.Sherlock.Light.ActionBar.TabBar" parent="Widget.Sherlock.ActionBar.TabBar">
</style>

也许您正在寻找actionBarTabStyleactionBarTabTextStyle

<item name="actionBarTabStyle">@style/Widget.Sherlock.Light.ActionBar.TabView</item>
<item name="actionBarTabTextStyle">@style/Widget.Sherlock.Light.ActionBar.TabText</item>

答案 1 :(得分:0)

试试这样:

  <style name="MyActionBarStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar">
    <item name="android:background">@drawable/my_new_bg</item>
    <item name="background">@drawable/my_new_bg</item>
  </style>