如果我使用java代码分配一个整数值来改变TextView的某个文本大小,该值将被解释为像素(px)。

有人知道如何在sp中赋值吗?


当前回答

当接受的答案不起作用时(例如在处理Paint时),您可以使用:

float spTextSize = 12;
float textSize = spTextSize * getResources().getDisplayMetrics().scaledDensity;
textPaint.setTextSize(textSize);

其他回答

当接受的答案不起作用时(例如在处理Paint时),您可以使用:

float spTextSize = 12;
float textSize = spTextSize * getResources().getDisplayMetrics().scaledDensity;
textPaint.setTextSize(textSize);

默认设置为setTextSize,不使用SP单位(像素比例)

public void setTextSize (float size)

在API级别1中添加 将默认文本大小设置为给定值,解释为“缩放像素”单位。这 大小根据当前密度和用户字体大小首选项进行调整。

http://developer.android.com/reference/android/widget/TextView.html#setTextSize%28int,%20float%29

例子:

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 65);

这是转换PX到SP格式的代码。 100%的工作

view.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);

从Api级别1开始,你可以使用公共void setTextSize (float size)方法。

从文档中可以看到:

将默认文本大小设置为给定值,解释为“缩放” 像素”单位。这个大小是根据电流密度和来调整的 用户字体大小首选项。 参数: size -> float:缩放后的像素大小。

所以你可以简单地做:

textView.setTextSize(12); // your size in sp