2

我目前正在为 2.3 - 4.2+ 的设备编写应用程序,并且遇到了一些奇怪且出乎意料的问题。在我尝试为其设置主题之前,它一直运行良好,并在所有设备上显示。即使是简单的样式,只是扩展了动作栏 sherlock 主题,似乎也没有显示动作栏。

样式的设置。

<style name="FrameworkRoot.Theme" parent="Theme.Sherlock.Light.DarkActionBar">
    <!-- API 11+ (compatibility) -->
    <item name="buttonBarStyle">@style/Compat.ButtonBar</item>
    <item name="buttonBarButtonStyle">@style/Compat.ButtonBarButton</item>
    <item name="indeterminateProgressStyle">@style/Compat.IndeterminateProgress</item>
    <!-- API 14+ (compatibility) -->
    <item name="listPreferredItemPaddingLeft">@dimen/compat_list_preferred_item_padding_left</item>
    <item name="listPreferredItemPaddingRight">@dimen/compat_list_preferred_item_padding_right</item>
    <item name="listPreferredItemHeightSmall">@dimen/compat_list_preferred_item_height_small</item>
</style>

<style name="Theme.Base" parent="FrameworkRoot.Theme">
    <item name="textHeaderMaxLines">@integer/text_header_max_lines</item>
    <item name="trackAbstractMaxLines">@integer/track_abstract_max_lines</item>
    <item name="activatableItemBackground">@drawable/activatable_item_background</item>
</style>    

<!-- Base themes for the app -->
<style name="Theme.TestApp" parent="Theme.Base">
    <item name="actionBarStyle">@style/Widget.TestApp.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.TestApp.ActionBar</item>
</style>

<!-- Base Action Bar Style -->
<style name="Widget.TestApp.ActionBar" parent="Theme.Sherlock.Light.DarkActionBar">

</style>

如果我删除:

<item name="android:actionBarStyle">@style/Widget.TestApp.ActionBar</item>

因此操作栏本身没有在 3.0+ 中设置样式,我无法设置该栏的样式。

设置它的最佳方法是什么?AndroidManifest.xml 将应用程序的样式指向“Theme.TestApp”。

我的最终目标是在操作栏上有一个自定义背景,以及自定义选项卡选择器颜色和字体。解决此问题的最佳方法是什么,因为我目前的方法效果不佳。

4

1 回答 1

1

您必须为 ActionBarSherlock本机 ActionBar 设置一个属性。所以替换这个例如:

<style name="Theme.Base" parent="FrameworkRoot.Theme">
    <item name="textHeaderMaxLines">@integer/text_header_max_lines</item>
    <item name="trackAbstractMaxLines">@integer/track_abstract_max_lines</item>
    <item name="activatableItemBackground">@drawable/activatable_item_background</item>
</style>    

有了这个:

<style name="Theme.Base" parent="FrameworkRoot.Theme">

    <item name="textHeaderMaxLines">@integer/text_header_max_lines</item>
    <item name="trackAbstractMaxLines">@integer/track_abstract_max_lines</item>
    <item name="activatableItemBackground">@drawable/activatable_item_background</item>

    <item name="android:textHeaderMaxLines">@integer/text_header_max_lines</item>
    <item name="android:trackAbstractMaxLines">@integer/track_abstract_max_lines</item>
    <item name="android:activatableItemBackground">@drawable/activatable_item_background</item>

</style>    

带有'android'前缀的属性指向本地ActionBar的内部资源,前面没有'android'的属性指向ActionBarSherlock的资源。

于 2013-04-28T18:42:56.977 回答