我的视图高度定义为:
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 任何人都知道这是为什么或我做错了什么?
答案 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();
这最后一个选项在运行时为您提供值。