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

Alv*_*nte 10 android landscape portrait actionbarsherlock android-actionbar

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

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

ActionBar处于纵向模式

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

ActionBar在横向模式下

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

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

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

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

MH.*_*MH. 23

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

例如,肖像中的默认值为:

<dimen name="abs__action_bar_default_height">48dip</dimen>
Run Code Online (Sandbox Code Playgroud)

在景观中:

<dimen name="abs__action_bar_default_height">40dip</dimen>
Run Code Online (Sandbox Code Playgroud)

可能有一种更清洁的方法,但我不得不承认我对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> 
Run Code Online (Sandbox Code Playgroud)

然后,您可以在相关的纵向/陆地资源存储桶中添加实际值.

第三次编辑 [感谢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>
Run Code Online (Sandbox Code Playgroud)

并在相应的活动中,设置这种新风格

android:theme="@style/Theme.Styled"
Run Code Online (Sandbox Code Playgroud)

并且..它的作品!