Ich habe ein Problem beim Platzieren einer TextView an den x- und y-Koordinaten des angegebenen Zentrums. Zuerst habe ich versucht, den Text in der TextView zu setzen und die Ansicht mit der Breite und der Höhe der Ansicht von diesem Link zu verschieben.
Aber es funktioniert nicht und ich würde gerne etwas anderes ausprobieren. Ich würde gerne wissen, ob es eine Methode gibt, um die Größe zu ermitteln, die ein bestimmter Text in meiner TextView einnehmen wird. Ich meine, ich kenne den Text und die Textgröße, wie kann ich die Breite und Höhe meiner TextView erhalten?
So etwas wie die Methode (NSString)sizeWithFont; für diejenigen, die iPhone-Entwickler kennen.
Midverse-Ingenieur
Rect bounds = new Rect();
textView.getPaint().getTextBounds(textView.getText().toString(), 0, textView.getText().length(), bounds);
bounds.width() gibt Ihnen die genaue Breite des Textes in der Textansicht.
Wie wir hier gerne sagen: Dies sollte die Antwort auf das OP sein. Die andere Antwort ist die übliche alte Methode zum Messen einer Ansicht, nicht einer Zeichenfolge in einer Ansicht.
@MarceloFilho Ich weiß nicht, warum es sich an manchen Stellen öffnet und an anderen bricht. Sie können dies versuchen sherifandroid.blogspot.com/2013/01/…
– Scherif el-Khatib
10. Mai 2014 um 9:09 Uhr
Wenn der Text Zeilen enthält, die umgebrochen werden, müssen Sie die Breite der MeasureSpec auf AT_MOST setzen, um eine genaue Höhe zu erhalten. Beispielcode ist hier: stackoverflow.com/a/20087258/462162
Aus irgendeinem Grund liefert mir die Lösung von Midverse Engineer nicht immer korrekte Ergebnisse (zumindest bei einigen Android-Versionen). Die Lösung von Sherif elKhatib funktioniert, hat aber den Nebeneffekt, dass MeasuredWidth und Height geändert werden. Dies könnte zu einer falschen Positionierung des TextViews führen.
Verwenden der inneren TextView Paing Klasse ist nicht so heiß, wenn Sie mehrere Textzeilen und unterschiedliche Auffüllungen haben. Hören Sie also auf, das Rad neu erfinden zu wollen. Verwenden getMeasuredHeight und getMeasuredWidth Methoden nach dem Aufruf measure(UNSPECIFIED, UNSPECIFIED). Vergessen Sie nur nicht, die neuen Werte in den Beitrag zu übernehmen, da Sie sonst meistens ein falsches Ergebnis erhalten.