小编典典

如何获得 ActionBar 的高度?

all

ActionBar每次创建活动时,我都试图获取(使用 Sherlock)的高度(特别是为了处理 ActionBar 高度可能发生变化的旋转配置更改)。

为此,我使用ActionBar.getHeight()仅在显示时才有效的方法ActionBar

第一次创建第一个活动时,我可以调用回调getHeight()onCreateOptionsMenu但是这个方法之后没有被调用。

所以我的问题是我什么时候可以调用 getHeight() 并确保它不会返回 0?或者如果不可能,我该如何设置 ActionBar 的高度?


阅读 61

收藏
2022-06-25

共1个答案

小编典典

如果您想明确控制 ActionBar 的大小,@birdy
的答案是一个选项,但有一种方法可以在不锁定我在支持文档中找到的大小的情况下将其拉起。这有点尴尬,但它对我有用。您将需要一个上下文,此示例在 Activity
中有效。

// Calculate ActionBar height
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
    int actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}

科特林

val tv = TypedValue()
if (requireActivity().theme.resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
    val actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, resources.displayMetrics)
}
2022-06-25