ActionBarSherlock会导致其他视图失真,并且无法正确显示

时间:2013-03-10 06:18:56

标签: android android-actionbar actionbarsherlock android-theme

我在我的应用程序中使用支持库的最新ActionBarSherlock扩展。当我在模拟器4.2和设备上运行应用程序时,我遇到了视图和操作栏本身的奇怪外观。请查看模拟器的屏幕截图。我们可以看到蓝色线出现在ListView的每个行分隔符中,并在主页图标下划线。enter image description here

小右箭头也是下划线,也没有正确缩放。 并且从透视角度来看,它在使用android 2.2的模拟器中显示良好

我使用主题的方式是:

ManifestFile.xml:

android:theme="@style/AppThemeWithoutTitle"

和styles.xml:

<style name="AppThemeWithoutTitle" parent="Widget.Sherlock.ActionBar">
  <item name="actionBarStyle">@style/MyActionBarWithoutTitle</item>
  <item name="android:actionBarStyle">@style/MyActionBarWithoutTitle</item>
</style>

<style name="MyActionBarWithoutTitle" parent="Widget.Sherlock.ActionBar">
  <item name="android:displayOptions">useLogo|showHome</item>
</style>

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Widget.Sherlock.ActionBar不是主题,它是一种风格。第一个线索是以Widget开头。 Android中主题的惯例是使用单词Theme启动它,或者至少将单词Theme放在样式名称中。

您覆盖并尝试用作主题的样式是分配给actionBarStyle的样式,这是您试图覆盖的样式。

您需要将一个实际主题作为您的父级,然后才能覆盖actionBarStyle并使其有效。

<style name="MyAppTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBarTheme</item>
    <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
</style>

<style name="MyActionBarTheme" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="background">@drawable/bg_striped</item>
    <item name="android:background">@drawable/bg_striped</item>

    <item name="backgroundSplit">@drawable/bg_striped_split</item>
    <item name="android:backgroundSplit">@drawable/bg_striped_split</item>
</style>

您可以找到可以覆盖的所有可用主题here