我希望在我的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测试”
答案 0 :(得分:1)
这两种方法之间可以有两个不同的高度,因为它们返回两个不同的值。第一种方法返回实际的ActionBar
高度。第二种方法返回android属性actionBarSize
的值。
拥有真正ActionBar
高度的正确方法是第一个,但如果您说您不想等待视图的创建,如果您使用Toolbar
,则可以通过xml他的身高为?android:attr/actionBarSize
,并使用第二种方法获取高度(以像素为单位)。