ActionBarSherlock在方向更改时更改选项卡文本颜色

时间:2013-03-01 04:07:39

标签: android actionbarsherlock

我使用ActionBarSherlock设置了ActionBar。当应用程序处于纵向和横向时,我需要使用不同的选项卡文本颜色集。当标签处于纵向模式时,文本应为浅灰色,如下所示:

Portrait Tab

当方向为横向时,标签文本颜色应为白色(#FFFFFF)。但是,当方向转换为横向时,文本如下所示:

Landscape Tab

同样,我需要在横向,白色(#FFFFFF)时使用标签的文本颜色。我正在使用Light.DarkActionBar主题并通过样式设置文本颜色,如下所示。

/ values 文件夹

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Example.Theme.Default" parent="@style/Theme.Sherlock.Light.DarkActionBar">

        <item name="actionBarTabTextStyle">@style/Example.ActionBar.TabTextStyle</item>
        <item name="android:actionBarTabTextStyle">@style/Example.ActionBar.TabTextStyle</item>

    </style>

    <style name="Example.ActionBar.TabTextStyle"  parent="Widget.Sherlock.ActionBar.TabText">
        <item name="android:textColor">#585858</item>
    </style>

</resources>

当我旋转设备时,文本会保持黑暗,这是预期的。我决定用资源修饰符解决这个问题,然后我在values-land文件夹下创建了一个新的资源文件夹,其中-land修饰符在横向文件中具有新的选项卡文本样式,如下所示。

/ values-land 文件夹

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="Example.ActionBar.TabTextStyle"  parent="Widget.Sherlock.ActionBar.TabText">
        <item name="android:textColor">#FFFFFF</item>
    </style>

</resources>

此时我希望在旋转设备时文本会改变颜色。 这不会发生。但是......如果我回到Android主屏幕将设备放入横向并且然后启动应用程序,则使用正确的资源样式(标签文本为白色)。如果我将它旋转回肖像,它会保持白色。我希望它能回到更深的颜色(#585858)

如何在屏幕方向的标签上更改文字颜色?似乎Android或ActionBar忽略了方向更改而没有再查找样式。任何人都有任何想法?

1 个答案:

答案 0 :(得分:1)

听起来你的清单中有android:configChanges="keyboardHidden|orientation"(或类似的东西)。如果你删除它,那么它应该在旋转时改变颜色。它还会导致活动在旋转时重新加载,因此请确保您也适当地处理它。