actionBarSize在xml和代码中有所不同

时间:2015-03-04 15:55:49

标签: android android-actionbar

我的视图高度定义为:

android:layout_height="?attr/actionBarSize"

稍后这个视图必须调整为更大的格式并最终返回到原始格式,所以在片段的onCreateView中我做了:

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

据我所知,其应该与我最初在XML中获得的值完全相同。 然而情况并非如此,XML的值是112,而在代码中它返回96 任何人都知道这是为什么或我做错了什么?

2 个答案:

答案 0 :(得分:0)

doc for getDimension(int,int)说 在索引处检索维度单位属性。单元 转化基于当前的DisplayMetrics 与此TypedArray对象的资源相关联 来自。

我认为可能是与之相关的displaymetrics不起作用。 所以试试

float pixelvalue = styledAttributes.getDimensionPixelSize(0, 0);
float dpValue =pixelvalue/ getResources().getDisplayMetrics().density;

答案 1 :(得分:-1)

如果使用ActionBarSherlock / AppCompat,请使用:

?attr/actionBarSize

为什么要使用?:

final int actionBarSize

为什么不使用?

actionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();

这最后一个选项在运行时为您提供值。