さまざまな画面解像度とさまざまな密度の問題を回避するために、画面の幅と高さのパーセンテージに基づいてすべてのサイズと位置を設定します。画面の幅または高さのパーセンテージに基づいてテキストのサイズを変更すると、フォントはすべてのデバイスとすべての解像度で正しいサイズになります。スペースの幅と高さに基づいて正しいフォントサイズを取得するには、次の関数を使用するだけです。
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))
これがお役に立てば幸いです