我想在代码中检索textApperanceLarge的int值。我相信下面的代码朝着正确的方向发展,但无法弄清楚如何从TypedValue中提取int值。

TypedValue typedValue = new TypedValue();
((Activity)context).getTheme().resolveAttribute(android.R.attr.textAppearanceLarge, typedValue, true);

最佳答案

您的代码仅获得textAppearanceLarge属性所指向的样式的资源ID,即Reno所指出的TextAppearance.Large。

要从样式中获取textSize属性值,只需添加以下代码:

int[] textSizeAttr = new int[] { android.R.attr.textSize };
int indexOfAttrTextSize = 0;
TypedArray a = context.obtainStyledAttributes(typedValue.data, textSizeAttr);
int textSize = a.getDimensionPixelSize(indexOfAttrTextSize, -1);
a.recycle();

现在,textSize将是textApperanceLarge指向的样式的文本大小(以像素为单位);如果未设置,则为-1。这是假设typedValue.type最初是TYPE_REFERENCE类型的,因此您应该先检查一下。

数字16973890来自以下事实:它是TextAppearance.Large的资源ID

10-07 23:20