我正在写一个关于眼睛测试的应用程序。有必要设置标准文本大小。我使用了以下代码,但它显示了我没想到的内容。
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厘米的文字。
我的代码错了还是我错过了什么?多谢你们 。这对我很重要。
答案 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毫米,这就是你得到的
因为Android需要使用您提供的大小来容纳textview中的所有可能字符。话虽如此,textSize并不是你提供给它的100%准确。
如果这还不够,请提供您手头问题的更多详细信息。