Aby uniknąć problemów z różnymi rozdzielczościami ekranu i różnymi gęstościami, dopasowuję i ustawiam wszystko w oparciu o procentową szerokość i wysokość ekranu. Jeśli rozmiar tekstu zostanie zmieniony na podstawie procentowej szerokości lub wysokości ekranu, czcionka będzie miała prawidłowy rozmiar na wszystkich urządzeniach i we wszystkich rozdzielczościach. Aby uzyskać prawidłowy rozmiar czcionki na podstawie szerokości i wysokości jej przestrzeni, po prostu użyj tej funkcji:
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;
}
Oto kod, aby uzyskać szerokość i wysokość ekranu:
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();
}
Aby uzyskać żądany rozmiar czcionki, po prostu utwórz obszar na podstawie szerokości i wysokości ekranu i dostosuj go, aż rozmiar czcionki będzie wyglądał prawidłowo. Gdy sprawisz, że będzie dobrze wyglądał, powinien wyglądać dobrze na wszystkich urządzeniach.
float textSize = SetTextSize("text", (int) (screenWidth * 0.1), (int) (screenHeight * 0.15))
mam nadzieję, że to Ci pomoże