【问题标题】:ActionBarSherlock casues distortion of other views and it doesn't display correctlyActionBarSherlock 导致其他视图失真,无法正确显示
【发布时间】:2013-03-10 15:15:38
【问题描述】:

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

小右箭头也有下划线,也没有正确缩放。 从这个角度来看,它在 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>

我该如何解决这个问题?

【问题讨论】:

    标签: android android-actionbar actionbarsherlock android-theme


    【解决方案1】:

    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 的可用主题。

    【讨论】:

    • 谢谢。我把样式弄乱了。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多