我在计算 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
。以下是调查结果。
<!-- Default height of an action bar. -->
<dimen name="action_bar_default_height">48dip</dimen>
<!-- Default height of an action bar. -->
<dimen name="action_bar_default_height">40dip</dimen>
<!-- 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/