获得ActionBar的高度

时间:2012-12-12 05:46:57

标签: android

我在我的应用程序中使用Actionbar。
我想以编程方式使用ActionBar的高度,因此我正在使用:

ActionBar.getHeight(); 


但是我得到了0的高度值。 那么如何才能获得ActionBar的高度?

3 个答案:

答案 0 :(得分:16)

我找到ActionBar.getHeight()的替代方案如果有人遇到同样的问题,那么this链接就很有用。

  

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

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

答案 1 :(得分:5)

下面的代码也会有所帮助。您可能需要将getContext()更改为此

final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
                    new int[] { android.R.attr.actionBarSize });
mActionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();

答案是从这个问题What is the size of ActionBar in pixels?

中复制而来的

对于较新版本的Android,您只需执行此操作:

getActionBar().getHeight()

答案 2 :(得分:3)

查找操作栏高度的简单方法来自Activity onPrepareOptionsMenu方法。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
           ....
           int actionBarHeight = getActionBar().getHeight());
           .....
    }