如何在android上设置绝对文本大小(TypedValue.COMPLEX_UNIT_MM)

时间:2014-11-22 14:15:03

标签: android

我正在写一个关于眼睛测试的应用程序。有必要设置标准文本大小。我使用了以下代码,但它显示了我没想到的内容。

            Typeface type=Typeface.createFromAsset(getAssets(),"Optotypes.ttf");
            textView2.setTypeface(type);
            textView2.setTextSize(TypedValue.COMPLEX_UNIT_MM,25);       
            textView2.setText(randomLetter);

我希望textview显示一个2.5厘米的字母,但它仍然不是确切的长度/高度。 这种情况也出现在不同的设备上。

下一个问题是原始字体和我添加的ttf之间的大小不同。 (原始字体也没有显示2.5厘米的文字。

我的代码错了还是我错过了什么?多谢你们 。这对我很重要。

1 个答案:

答案 0 :(得分:0)

我认为你错过了Android处理文字大小的方式。

在Android中,您应该以SP为单位指定文本大小,因此Android可以根据用户的字体大小首选项对其进行缩放。切勿指定硬编码像素或厘米。

检查此参考文献以获取有关该主题的文档:

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

http://developer.android.com/reference/android/widget/TextView.html#attr_android:textSize

What is the difference between "px", "dp", "dip" and "sp" on Android?

如果要以编程方式在SP中设置文本大小,可以执行此操作

// same as android:textSize="15sp" in XML
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);

- 编辑

请记住,仅设置一定的文字大小并不意味着每个字母都具有该大小。请记住,有多个字母有多种尺寸。例如,尺寸为20毫米,这就是你得到的

enter image description here enter image description here

因为Android需要使用您提供的大小来容纳textview中的所有可能字符。话虽如此,textSize并不是你提供给它的100%准确。

如果这还不够,请提供您手头问题的更多详细信息。