Um die Probleme unterschiedlicher Bildschirmauflösungen und unterschiedlicher Dichte zu vermeiden, dimensioniere und positioniere ich alles basierend auf der prozentualen Breite und Höhe des Bildschirms. Wenn die Größe des Texts basierend auf der prozentualen Breite oder Höhe des Bildschirms geändert wird, hat die Schriftart auf allen Geräten und allen Auflösungen die richtige Größe. Verwenden Sie einfach diese Funktion, um die richtige Schriftgröße basierend auf der Breite und Höhe des Bereichs zu erhalten:
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;
}
Hier ist der Code, um die Breite und Höhe des Bildschirms zu ermitteln:
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();
}
Um die gewünschte Schriftgröße zu erhalten, erstellen Sie einfach einen Bereich basierend auf der Bildschirmbreite und der Bildschirmhöhe und passen Sie ihn an, bis die Schriftgröße richtig aussieht. Sobald Sie es richtig aussehen lassen, sollte es auf allen Geräten richtig aussehen.
float textSize = SetTextSize("text", (int) (screenWidth * 0.1), (int) (screenHeight * 0.15))
ich hoffe das hilft dir