Gibt es eine Methode, die die Breite (in Pixel) eines auf einer Android-Zeichenfläche zu zeichnenden Textes mit der drawText () -Methode gemäß der zum Zeichnen verwendeten Farbe zurückgibt?
android
text
android-canvas
draw
NioX5199
quelle
quelle
quelle
Ergänzende Antwort
Es gibt einen kleinen Unterschied zwischen der von
Paint.measureText
und zurückgegebenen BreitePaint.getTextBounds
.measureText
Gibt eine Breite zurück, die den Wert adv_X des Glyphen enthält, der den Anfang und das Ende der Zeichenfolge auffüllt. Die von zurückgegebeneRect
BreitegetTextBounds
hat diese Auffüllung nicht, da die GrenzenRect
den Text eng umschließen.Quelle
quelle
Es gibt tatsächlich drei verschiedene Möglichkeiten, Text zu messen.
GetTextBounds:
MeasureTextWidth:
Und getTextWidths:
Beachten Sie, dass getTextWidths hilfreich sein kann, wenn Sie festlegen möchten, wann Text in die nächste Zeile umgebrochen werden soll.
MeasureTextWidth und getTextWidth sind gleich und haben die erweiterte Breite, über die andere gepostet haben. Einige halten diesen Raum für übermäßig. Dies ist jedoch sehr subjektiv und abhängig von der Schriftart.
Beispielsweise kann die Breite von Maßtextgrenzen tatsächlich zu klein aussehen:
Wenn Sie jedoch einen zusätzlichen Text hinzufügen, sehen die Grenzen für einen Buchstaben normal aus:
Bilder aus dem Android Developers Guide für benutzerdefinierte Leinwandzeichnungen
quelle
Nun, ich habe es anders gemacht:
Hoffe das wird dir helfen.
quelle
Ich habe die Methoden MeasureText () und getTextPath () + computeBounds () verwendet und ein Excel mit allen Textattributen für Schriftarten mit fester Größe erstellt, die unter https://github.com/ArminJo/android-blue-display/blob zu finden sind /master/TextWidth.xlsx . Dort finden Sie auch einfache Formeln für andere Textattribute wie Aufstieg usw.
Die App sowie die Funktion drawFontTest () zum Generieren der im Excel verwendeten Rohwerte sind ebenfalls in diesem Repo verfügbar.
quelle
Sie können "textPaint.getTextSize ()" verwenden, um die Textbreite abzurufen
quelle