重用TextView的文本大小时出现奇怪的行为

时间:2014-11-02 23:14:21

标签: android textview text-size

我想扩展我的textview字体大小,但是,我无法从非常简单的代码中理解它的行为,所以我无法控制字体大小。

 TextView textView = (TextView)findViewById(R.id.textview2);
 textView.setTextSize(textView.getTextSize());

字体大小不应该改变,但textView改变了它的字体大小,而我使用了getTextSize()方法中的相同值。谁能解释一下?

1 个答案:

答案 0 :(得分:3)

  

这里的区别在于setTextSize(int size)方法中的   单位类型默认为" sp"或"缩放像素"。这个值将是一个   每个屏幕密度的不同像素尺寸(ldpi,mdpi,hdpi)。

     另一方面,

getTextSize()返回实际的像素尺寸   文本。

它也解释了你的问题。完整的主题链接是here

如果你想转换它们,那么:

public static float pixel2Sp(Context context, float px) {
    float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
    return px/scaledDensity;
}

textView.setTextSize(pixel2Sp(context, textView.getTextSize());