为了避免不同屏幕分辨率和不同密度的问题,我根据屏幕的百分比宽度和高度来调整大小和位置。如果根据屏幕宽度或高度的百分比调整文本大小,则字体在所有设备和所有分辨率上都将是正确的大小。要根据其空间的宽度和高度获得正确的字体大小,只需使用此函数:
private float SetTextSize(String text, int width, int height)
{
Paint paint = new Paint();
float textWidth = paint.measureText(text);
float textSize = (int) ((width / textWidth) * paint.getTextSize());
paint.setTextSize(textSize);
textWidth = paint.measureText(text);
textSize = (int) ((width / textWidth) * paint.getTextSize());
// Re-measure with font size near our desired result
paint.setTextSize(textSize);
// Check height constraints
FontMetricsInt metrics = paint.getFontMetricsInt();
float textHeight = metrics.descent - metrics.ascent;
if (textHeight > height)
{
textSize = (int) (textSize * (height / textHeight));
paint.setTextSize(textSize);
}
return textSize;
}
这是获取屏幕宽度和高度的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
{
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
screenWidth = size.x;
screenHeight = size.y;
}
else
{
Display display = getWindowManager().getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
}
要获得您想要的字体大小,只需根据屏幕宽度和屏幕高度组成一个区域并调整它,直到字体大小看起来正确。一旦你让它看起来正确,它应该在所有设备上看起来都正确。
float textSize = SetTextSize("text", (int) (screenWidth * 0.1), (int) (screenHeight * 0.15));
我希望这可以帮助你