ActionBar每次创建活动时,我都试图获取(使用 Sherlock)的高度(特别是为了处理 ActionBar 高度可能发生变化的旋转配置更改)。
ActionBar
为此,我使用ActionBar.getHeight()仅在显示时才有效的方法ActionBar。
ActionBar.getHeight()
第一次创建第一个活动时,我可以调用回调getHeight()。onCreateOptionsMenu但是这个方法之后没有被调用。
getHeight()
onCreateOptionsMenu
所以我的问题是我什么时候可以调用 getHeight() 并确保它不会返回 0?或者如果不可能,我该如何设置 ActionBar 的高度?
如果您想明确控制 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) }