我有一个Android应用程序,根据android设备的分辨率动态缩放文本。我已经在Android模拟器中测试了这段代码,并且我的代码可以正常工作(包括与HTC Desire和Motorola Droid相同的分辨率)。它也可以在我的HTC Wildfire上正常工作。以下是一些来自模拟器的屏幕截图:
但是...我已经尝试在HTC Desire上使用它,并且有用户使用Motorola Droid报告说字体未正确缩放:
请注意,它正在截断文本。
这个问题出现在这些特定的设备上有什么想法吗?我目前有一个函数,根据文本的可用高度缩小文本...类似于这样:
有什么想法,为什么只有几个设备会出现这种情况?我该怎么解决? 还有其他字体度量标准需要考虑吗?比如比例或DPI? 谢谢。
但是...我已经尝试在HTC Desire上使用它,并且有用户使用Motorola Droid报告说字体未正确缩放:
请注意,它正在截断文本。
这个问题出现在这些特定的设备上有什么想法吗?我目前有一个函数,根据文本的可用高度缩小文本...类似于这样:
public static float calculateHeight(FontMetrics fm) {
return Math.abs(fm.ascent) + fm.descent;
}
public static int determineTextSize(Typeface font, float allowableHeight) {
Paint p = new Paint();
p.setTypeface(font);
int size = (int) allowableHeight;
p.setTextSize(size);
float currentHeight = calculateHeight(p.getFontMetrics());
while (size!=0 && (currentHeight) > allowableHeight) {
p.setTextSize(size--);
currentHeight = calculateHeight(p.getFontMetrics());
}
if (size==0) {
System.out.print("Using Allowable Height!!");
return (int) allowableHeight;
}
System.out.print("Using size " + size);
return size;
}
有什么想法,为什么只有几个设备会出现这种情况?我该怎么解决? 还有其他字体度量标准需要考虑吗?比如比例或DPI? 谢谢。