我有一个 Android 应用程序,它可以根据 android 设备的分辨率动态缩放文本。我已经在 Android 模拟器中的所有预定义分辨率上测试了这段代码,并且我的代码运行良好。(这包括与 HTC Desire 和 Motorola Droid 相同的分辨率)
它在我的 HTC Wildfire 上也能正常工作。
以下是模拟器的一些屏幕截图:
但是......我已经在 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?
谢谢。