最近几天我一直在使用 ActionBar 和 ActionBarSherlock,在 ActionBar 中填写一些信息时遇到了一些问题。
当应用程序以纵向模式运行时,ActionBar 看起来很好,并且可以显示所有数据,例如:
但是当我将应用程序切换为横向显示时,一些数据被裁剪了:
您可以注意到由于 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/