以编程方式设置textSize

时间:2013-12-04 01:15:48

标签: android

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.result_font));

以下代码有效,但R.dimen.result_font被视为比实际值大得多的值。根据屏幕尺寸,它可能约为18sp-22sp或24sp ......但这里设置的尺寸至少约为50sp。有人可以推荐一些东西吗?

2 个答案:

答案 0 :(得分:148)

您必须将其更改为TypedValue.COMPLEX_UNIT_PX,因为getDimension(id)会从资源中返回维度值,隐式会转换为 px

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 
           getResources().getDimension(R.dimen.result_font));

答案 1 :(得分:9)

<强>要求

假设我们想要从资源文件中以编程方式设置textView Size。

维度资源文件(res / values / dimens.xml)

<resources>     
   <dimen name="result_font">16sp</dimen>
</resources>

<强>解决方案

首先从资源文件中获取 dimen 值到变量&#34; textSizeInSp&#34;。

int textSizeInSp = (int) getResources().getDimension(R.dimen.result_font);

接下来将 16 sp值转换为相等的像素。

为此创建方法。

 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()));
相关问题