我正在使用这个函数通过 Java 从我的 dimens.xml 文件中获取一个维度:
public static float getDimen(Context context, String name)
{
Assert.assertNotNull(context);
Assert.assertNotNull(name);
Resources res = context.getResources();
int dimensionID = res.getIdentifier(name, "dimen", context.getPackageName());
return res.getDimension(dimensionID);
}
这类似于:getDimen(mContext, "textsize_small")
并检索“R.dimen.textsize_small”值(或至少应该如此)。
<resources>
<dimen name="textsize_small">10dp</dimen>
<dimen name="textsize_medium">13dp</dimen>
<dimen name="textsize_large">15dp</dimen>
<dimen name="textsize_xlarge">17dp</dimen>
</resources>
所以,在有了这个值之后,我用它来设置 TextView 的 TextSize:
float textsize = getDimen(mContext, "textsize_" + object.getDesiredSize);
textview.setTextSize(textsize);
Log.d(TAG, "TextSize: " + textview.getTextSize());
编辑:
我设置android:textSize="@dimen/textsize_small"
并使用了getDimen(mContext, "textsize_small")
. 在第一个中,Log.d 返回15.0,在第二个中返回22.5
是否缺少任何类型转换?