为了避免出现不同的屏幕分辨率和不同的密度的问题,我根据屏幕的宽度和高度百分比来调整大小和位置。如果根据屏幕的宽度或高度百分比调整文本大小,则字体在所有设备和所有分辨率上均为正确的大小。要根据其空间的宽度和高度获得正确的字体大小,只需使用此功能:
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());
paint.setTextSize(textSize);
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))
我希望这可以帮助你