在android中获取actionbar高度

时间:2016-02-28 17:56:52

标签: android android-actionbar

我希望在我的oncreate方法中获取操作栏高度,而不是在像这样创建的视图之后 第一种方式

 content.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            Log.d(tag + " onCreate", "getSupportActionBar().getHeight()=" + getSupportActionBar().getHeight());
            return true;
        }
    });

为此,我使用此代码
第二种方式

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

但我的问题是,当我使用第一种方式时,我得到动作栏高度56,当我使用secound方式时,我得到动作栏高度48.
我认为第一种方式是正确的答案,但我不想等到意见创建 任何人都可以帮我这个吗? “我使用htc desire 200进行密度mdpi测试”

1 个答案:

答案 0 :(得分:1)

这两种方法之间可以有两个不同的高度,因为它们返回两个不同的值。第一种方法返回实际的ActionBar高度。第二种方法返回android属性actionBarSize的值。

拥有真正ActionBar高度的正确方法是第一个,但如果您说您不想等待视图的创建,如果您使用Toolbar,则可以通过xml他的身高为?android:attr/actionBarSize,并使用第二种方法获取高度(以像素为单位)。