下面的代码给出了Resources$NotFoundException
TypedValue value = new TypedValue();
((Activity)context).getResources().getValue(android.R.attr.listPreferredItemHeight, value, true);
编辑:添加更多代码以响应答案。
当我运行下面的代码时,displayMetrics
的所有成员都是0。ret
也是如此。
TypedValue value = new TypedValue();
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity)context).getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true);
float ret = value.getDimension(displayMetrics);
发布于 2013-02-06 17:43:44
另一个答案
public float getItemHeight() {
TypedValue value = new TypedValue();
DisplayMetrics metrics = new DisplayMetrics();
context.getTheme().resolveAttribute(
android.R.attr.listPreferredItemHeight, value, true);
((WindowManager) (context.getSystemService(Context.WINDOW_SERVICE)))
.getDefaultDisplay().getMetrics(metrics);
return TypedValue.complexToDimension(value.data, metrics);
}
它可能更有用。
发布于 2011-12-01 00:30:30
Femi的回答非常有帮助。我并不想贬低他的回答,而是将逻辑放在您应该能够即插即用的library convenience method中。我计划随着时间的推移用其他属性方法更新代码。我希望它对某些人有用。
(请注意,我发现与查询WindowManager相比,Resources.getDisplayMetrics()
似乎是一种返回显示指标的更简单的方法。)
https://stackoverflow.com/questions/5982132
复制相似问题