以下代码给出 Resources$NotFoundException
TypedValue value = new TypedValue();
((Activity)context).getResources().getValue(android.R.attr.listPreferredItemHeight, value, true);
Run Code Online (Sandbox Code Playgroud)
编辑:响应答案添加了更多代码.
当我运行以下代码时,所有成员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);
Run Code Online (Sandbox Code Playgroud)
Fem*_*emi 32
这有效:
TypedValue value = new TypedValue();
((Activity)context).getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true);
Run Code Online (Sandbox Code Playgroud)
编辑:你得到零,因为没有DisplayMetrics正确初始化实例.它需要一个参考框架(一个显示器)来进行任何有意义的转换.
android.util.TypedValue value = new android.util.TypedValue();
boolean b = getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true);
String s = TypedValue.coerceToString(value.type, value.data);
android.util.DisplayMetrics metrics = new android.util.DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float ret = value.getDimension(metrics);
Run Code Online (Sandbox Code Playgroud)
在我的Nexus 1上s是64.0dip并且ret是96.
另一个答案
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);
}
Run Code Online (Sandbox Code Playgroud)
它可能更有用.
| 归档时间: |
|
| 查看次数: |
17076 次 |
| 最近记录: |