Android ActionBar 高度问题

标签 android actionbarsherlock android-actionbar android-actionbar-compat

我在计算 ActionBar 的高度时遇到了一个奇怪的问题。我的应用程序中有几个部分位于 ActionBar 的正下方,我还在使用 Chris Banes 的库 actionbar-pulltorefresh .

我将使用拉取刷新库中的示例。我遇到的问题与 here 完全相同,除了我完全按照指南中的说明使用 Fragments 进行所有操作。它基本上计算出 ActionBar 的高度大约是它应该的高度的一半。同样在应用程序的不同部分,我将 PopupWindow 定位在 ActionBar 下方,因此我调用了 getHeight() 并使用它我的窗口的位置,我遇到了与下拉刷新库相同的问题。

所以我认为这与 ActionBar 高度的测量方式有关,并且可能是样式问题。

但这就是它变得有趣的地方。如果我将设备旋转到横向模式,即使我旋转回纵向模式,它也会很好地计算出高度并将所有东西放在从那个点开始应该在的位置。它突然修复,直到我重新启动应用程序并将其从内存中杀死并重新开始。

有人遇到过类似的事情吗?

注意:我现在使用的是 appcompat 库,但我之前使用的是 ActionBarSherlock,有时也使用了基本的 ActionBar,所有场景都给出了相同的结果。

更新 1: 我从问题 here 得到了相同的结果, here , 和 here .但是,我正在按照 README 中的说明进行所有操作,因此我非常有信心这与我的设备如何测量 ActionBar 高度有关。

更新 2: 我在另一个 Activity 中使用了操作栏 PullToRefresh 库,它工作正常,所以它一定与我的主要 Activity 有关。

最佳答案

为了确保操作栏下没有 View ,您可以在 XML 中为其添加上边距。

<SomeView
    ...
    android:layout_marginTop="?android:attr/actionBarSize" />

来源:http://developer.android.com/guide/topics/ui/actionbar.html#Style

更新:添加了以下内容。我决定深入研究 Android 源代码,看看实际的 ActionBar 高度应该是多少。因此,我查看了所有不同类型的 values/dimens.xml 以找到 action_bar_default_height。以下是调查结果。

values/dimens.xml ,

<!-- Default height of an action bar. -->
<dimen name="action_bar_default_height">48dip</dimen>

values-land/dimens.xml ,

<!-- Default height of an action bar. -->
<dimen name="action_bar_default_height">40dip</dimen>

values-sw600dp/dimens.xml ,

<!-- Default height of an action bar. -->
<dimen name="action_bar_default_height">56dip</dimen>

我还检查了以下内容,但它们不会覆盖此属性:

values-large
values-sw380dp
values-sw600dp-land
values-sw720dp
values-w360dp
values-w600dp
values-w720dp
values-xlarge

当我有更多时间时,我可能会寻找问题的根源,但在那之前您可以将这三个值添加到不同的值文件夹中(作为临时修复)。

关于Android ActionBar 高度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094399/

相关文章:

android - fragment 上的操作栏图标菜单问题

android - 是否可以检查 Google 帐户是否属于 Google+ 中特定社区的一部分

android - 应用程序的类文件未打包到 APK 中

android - Navigation Drawer 与 Action Bar 略微重叠

android:actionBarStyle 需要 API 级别 11

android - 如何在 Android 中更改 ActionMode 背景颜色

Android:如何/教程将 ActionBar 更改为 ActionBarCompat(工具栏)?

android - React Native - TabNavigator 在 Android 中的 ScrollView 中不工作

android - Google GCM - 在 android Lollipop 中没有收到推送通知

java - 如何直接从复制或分享 URL 获取 Instagram 图片或视频 URL?