以编程方式设置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()));