Android(ActionBarSherlock)有没有办法在纵向和横向中保持相同的ActionBar高度?

时间:2012-06-05 00:32:28

标签: android landscape android-actionbar actionbarsherlock portrait

过去几天我一直在使用ActionBar和ActionBarSherlock,在ActionBar中填写一些信息时遇到了一些问题。

当应用程序以纵向模式运行时,ActionBar看起来很好,并且可以显示所有数据,例如:

ActionBar in portrait mode

但是,当我将应用程序切换为横向显示时,会裁剪一些数据:

ActionBar in landscape mode

您可以注意到由于ActionBar的新高度,状态图标和电子邮件的裁剪方式。

在这种情况下,我想为肖像和风景保持相同的大小,以便应用程序看起来很好。我无法减小操作栏标题的字体大小,因为它可能包含其他图标。

我将这些图标放在操作栏标题和副标题中的方式是使用Html.fromHtml

有什么想法可以解决这个问题吗?我正在使用ActionBarSherlock库!

1 个答案:

答案 0 :(得分:23)

一种,可能不是太漂亮的方法,可以覆盖dimens.xml中ActionBar的默认高度值。

E.g。纵向中的默认值为:

<dimen name="abs__action_bar_default_height">48dip</dimen>

在景观中:

<dimen name="abs__action_bar_default_height">40dip</dimen>

可能有更简洁的方法,但我不得不承认我对ActionBarSherlock的内部知之甚少。


编辑:想想看,当在ICS上使用本机ActionBar时,这可能不起作用,因为高度将解析为?android:attr/actionBarSize中的平台值。我建议你等一个更好的建议,例如来自杰克本人。

第二次修改 在Jake的回复之后,似乎只需要在ICS和pre-ICS设备上使用ActionBarSherlock就可以将以下内容添加到应用程序的主题中:

<item name="actionBarSize">@dimen/some_value</item>
<item name="android:actionBarSize">@dimen/some_value</item> 

然后,您可以在相关的肖像/土地资源桶中添加实际值。

第三次修改 [感谢 alvarolb ]:样式的XML示例:

<?xml version="1.0" encoding="utf-8"?>
<resources>   
    <style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
        <item name="actionBarSize">48dip</item>
        <item name="android:actionBarSize">48dip</item> 
    </style> 
</resources>

在相应的活动中,设置此新样式

android:theme="@style/Theme.Styled"

和..它有效!