样式操作栏会导致选项卡消失

时间:2015-03-19 12:45:24

标签: android android-layout android-styles

我尝试为我的应用设置样式操作栏和标签,但每次尝试设置样式时,操作栏标签都会消失

<resources>
<style name="STheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarTabTextStyle">@style/MyActionBarTabText</item>
    <item name="actionBarTabStyle">@style/MyActionBarTabView</item>
    <item name="android:dialogTheme">@style/MyDialog</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="background">@color/orange</item>
</style>

<style name="MyActionBarTabText" parent="@android:style/Widget.Holo.ActionBar.TabText">
    <item name="android:textAllCaps">false</item>
    <item name="android:textSize">10sp</item>
</style>
<style name="MyActionBarTabView" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="background">@drawable/actionbar_tab_indicator</item>
    <item name="showDividers">middle</item>
    <item name="measureWithLargestChild">true</item>
</style>

当我删除此行(操作栏样式)时,标签显示:

<item name="actionBarStyle">@style/MyActionBar</item>

任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

您在父级样式中使用的是AppCompact样式,而在子样式中如何使用Holo样式? 更新样式父母如:

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
<style name="MyActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
<style name="MyActionBarTabView" parent="@style/Widget.AppCompat.ActionBar.TabView">

另请参阅此非常有用的页面以定制操作栏:ActionbarStyleGenerator

希望这有帮助!

答案 1 :(得分:0)

您使用的是支持库Theme.AppCompat,因此您的自定义样式parent应如下所示:

<style name="MyActionBar"  
               parent="@android:style/Widget.AppCompat.ActionBar">
     <item name="background">@color/orange</item>
</style>

<style name="MyActionBarTabText"
               parent="@android:style/Widget.AppCompat.ActionBar.TabText">
     <item name="android:textAllCaps">false</item>
     <item name="android:textSize">10sp</item>
</style>
<style name="MyActionBarTabView"
              parent="@android:style/Widget.AppCompat.ActionBar.TabView">
     <item name="background">@drawable/actionbar_tab_indicator</item>
     <item name="showDividers">middle</item>
     <item name="measureWithLargestChild">true</item>
</style>

[<强>更新

对于上述样式,需要将STheme更改为:

<style name="STheme" parent="@style/Theme.AppCompat">

如果您确实要将style/Theme.AppCompat.Light.DarkActionBar用于STheme,则必须更改自定义样式父级:

<style name="MyActionBar"
       parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">

希望这有帮助!