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

Styling Actionbar causes the tabs to disappear

我尝试为我的应用程序设置操作栏和选项卡的样式,但每次尝试设置样式时,操作栏选项卡都消失了

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

当我删除此行(actionbar 样式)时,出现选项卡:

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

有人知道为什么会这样吗?

您正在使用支持库 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">

如果你真的想为 STheme 使用 style/Theme.AppCompat.Light.DarkActionBar 那么相应地必须更改自定义样式父级:

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

希望对您有所帮助!

您在 parent 风格中使用 AppCompact 风格,而不是如何在 child 风格中使用 Holo 风格? 更新样式 parent 如:

<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

希望对您有所帮助!