Android: how to get value of "listPreferredItemHeight" attribute in code?
android
Solution
This works:
TypedValue value = new TypedValue();
((Activity)context).getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true);
EDIT: You get zero because haven't initialized the `DisplayMetrics` instance properly. It needs a frame of reference (a display) to do any meaningful conversion.
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);
On my Nexus 1 `s` is 64.0dip and `ret` is 96.
Problem
The below code gives `Resources$NotFoundException` ``` TypedValue value = new TypedValue(); ((Activity)context).getResources().getValue(android.R.attr.listPreferredItemHeight, value, true); ``` EDIT: More code added in response to answer. When I run the below code, all members of `displayMetrics` are 0. As is `ret`. ``` TypedValue value = new TypedValue(); DisplayMetrics displayMetrics = new DisplayMetrics(); ((Activity)context).getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true); float ret = value.getDimension(displayMetrics); ```