以编程方式设置textSize
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.result_font));
下面的代码可以工作,但是R.dimen.result_font
被视为比实际更大的值。 根据屏幕大小,它可能大约是18sp-22sp或24sp …但是这里设置的大小至less是50sp。 有人可以推荐一些东西吗?
您必须将其更改为TypedValue.COMPLEX_UNIT_PX
因为getDimension(id)
从资源返回一个TypedValue.COMPLEX_UNIT_PX
值并隐式转换为px 。
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.result_font));
需求
假设我们想从资源文件中编程设置textView大小。
维度资源文件 (res / values / dimens.xml)
<resources> <dimen name="result_font">16sp</dimen> </resources>
解
首先从资源文件中获取维度值到一个variables“textSizeInSp”中。
int textSizeInSp = (int) getResources().getDimension(R.dimen.result_font);
接下来将16 sp值转换为相等的像素。
为此创build一个方法。
public static float convertSpToPixels(float sp, Context context) { return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics()); }
让我们设置TextSize,
textView.setTextSize(convertSpToPixels(textSizeInSp , getApplicationContext()));
全部一起,
int textSizeInSp = (int) getResources().getDimension(R.dimen.result_font); textView.setTextSize(convertSpToPixels(textSizeInSp , getApplicationContext()));