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

标签 android landscape android-actionbar actionbarsherlock portrait

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

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

ActionBar in portrait mode

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

ActionBar in landscape mode

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

在这种情况下,我希望纵向和横向的尺寸保持相同,以便应用看起来不错。我无法减小操作栏标题的字体大小,因为它可能包含其他图标。

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

有解决这个问题的想法吗?我正在使用 ActionBarSherlock 库!

最佳答案

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

例如纵向的默认值为:

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

横向:

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

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


编辑: 想想看,当在 ICS 上使用 native ActionBar 时,这可能行不通,因为高度将解析为 ?android 中的平台值:attr/actionBarSize。我建议您等待更好的建议,例如来自 jack 本人。

第二次编辑: 在 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>

并在对应的activity中,设置这个新的样式

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

而且..它有效!

关于Android (ActionBarSherlock) 有没有办法在纵向和横向上保持相同的 ActionBar 高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890159/

相关文章:

iphone - 如何将 XIB 置于景观中

css - 没有正文内容的 iPad 横屏上的额外正文高度 (iOS7)

android - 如何在操作栏的应用程序图标旁边添加 "menu"指示器?

android - 从父 Activity 传递结构

java - ListView 不会显示 - 空白屏幕

java - 将字节数组和字符串存储在同一个文件中

html - 如何显示图像风景

android - ActionBar/ActionBarSherlock 中的自定义图像而不是 Logo

android - 应用程序图标在 android Lollipop 及更高版本的 Actionbar 上不可见

android - 从 APK 安装应用程序时出现 java.lang.ClassNotFoundException