Holen Sie sich die Höhe einer TextView
Habe ich einige text, werden in einer TextView
. Ich hab das mit setText()
.
Nun ich muss die Anzahl der Zeilen oder Höhe, die der text nimmt in den TextView
. Ich habe versucht, mit getHeight()
, aber es gibt immer 0 zurück.
Gibt es trotzdem, um die Höhe des Textes präsentieren in der TextView
?
Sie können nicht die Höhe einer Sicht, bis es gerendert wurde, das ist, warum Sie immer 0 zurückgegeben, wenn Sie die überprüfung der Höhe nur, nachdem Sie sich gesetzt haben, den text. Warum brauchen Sie, zu wissen, die Höhe? Bitte erläutern Sie mehr über das, was Sie versuchen zu erreichen.
ich habe eine Anwendung entwickeln, die zeigt, dass der text als auch die Bilder(wie bei einem ebook-reader) Seite von Seite(ich meine, sollte es nicht enthalten keine scrollbars).. also, wenn ich einen Großteil des Textes zu setzen, muss ich wissen, wie viel der text ist Besatzungsmacht in den Bildschirm, so dass es passt in den Bildschirm..
ich habe eine Anwendung entwickeln, die zeigt, dass der text als auch die Bilder(wie bei einem ebook-reader) Seite von Seite(ich meine, sollte es nicht enthalten keine scrollbars).. also, wenn ich einen Großteil des Textes zu setzen, muss ich wissen, wie viel der text ist Besatzungsmacht in den Bildschirm, so dass es passt in den Bildschirm..
InformationsquelleAutor Siva Kumar | 2011-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als John wies darauf hin, werden Sie nicht in der Lage, um die Höhe sofort nach setText. Ich bin mir nicht sicher, mit getHeight() auf die TextView selbst wird Ihnen helfen, viel. Die Höhe der anzeigen ist nicht nur abhängig von der Höhe des sichtbaren text in den Blick, sondern auch auf die viewgroup/layout die TextView befindet. Wenn die viewgroup erzählt die TextView zu maximieren Höhe, getHeight() bekommst du nirgends, auch wenn Sie warten, bis nach der text gerendert wird.
Ich sehe eine Reihe von Möglichkeiten, dies getan werden könnte:
Nicht die Textviews Dimensionen. Holen Sie sich die TextViews Malen mit TextView.getPaint(), und dann berechnen Sie die Breite und Höhe von
Rect Grenzen,
Farbe.getTextBounds(text, 0, text.Länge(), bounds);
Nun müssen Sie die Abmessungen in Grenzen. Sie können nun mit Farbe.breakText zu sehen, wie viel text Sie auf eine Zeile passen. Wahrscheinlich zu viel Aufwand und garantiert nicht, (für meine ungeübten Augen) die gleiche Logik, wie verwendet, durch TextView.
Gut, Sie haben public class MyText erstreckt TextView { OVERRIDE-METHODEN HIER } und in der main-Klasse, die Sie tun ein "MyText textView = new Text(this);" anstelle von "TextView textView = new TextView(this);". Wenn Sie möchten, verwenden Sie XML-layouts statt, ich empfehle die Lektüre von developer.android.com/guide/topics/ui/custom-components.html (Eigentlich gelesen, dass auch für das erstellen von Sachen, die in Java).
Thnks .. aber onSizeChanged Methode wird immer am Ende genannt !! also die getLineCount kann nicht verwendet werden, die in der Mitte der Anwendung !Ich meine .. wenn ich will, um eine variable zu initialisieren, die mit textview.getLineCount(),den Wert der Variablen ist 0 bis zum Ende auch nach Einstellung der text
hier ist der code pastebin.com/u4VyPiLy
InformationsquelleAutor Kevin Read
Weil diese Größe ist nur bekannt, nachdem das layout fertig ist, ist ein Weg, um erstellen Sie einen benutzerdefinierten text anzeigen und verwenden onSizeChanged Methode. Ein anderer Weg ist dieser:
Diesem code habe ich das hier gefunden: So rufen Sie die Abmessungen einer Sicht?
Das prblem mit dem obigen code ist, dass .. die Höhe der textview kann nur erreicht werden, am Ende der code .. ich bin nicht in der Lage, um es in der Mitte !! Ich nahm eine variable zur Speicherung der Höhe und initialisiert die variable mit tv.getHeight() in onGlobalLayout().. aber die Variable ist der Wert immer 0 bis zum Ende .. am Ende ändert es an der Höhe des Textes...
Es funktioniert ..danke @Lumis
Dieser code hat mir geholfen auf der Suche nach TextView "Breite" und "Höhe".
InformationsquelleAutor Lumis