Vertikales (gedrehtes) Label in Android
Brauche ich 2 Möglichkeiten, zu zeigen, vertikale Beschriftung in Android:
- Horizontale Beschriftung um 90 Grad gegen den Uhrzeigersinn (Buchstaben auf der Seite)
- Horizontale Beschriftung mit Buchstaben ein, unter anderem (wie ein Shop-Schild)
Brauche ich zum entwickeln von benutzerdefinierten widgets für beide Fälle (ein Fall), kann ich TextView zu erbringen, dass die Art und Weise, und was wäre ein guter Weg, um etwas zu tun, wenn ich muss gehen komplett custom?
InformationsquelleAutor der Frage Bostone | 2009-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier meine elegante und einfache vertikale text-Implementierung, Erweiterung TextView. Dies bedeutet, dass alle standard-Stile von TextView verwendet werden kann, weil es verlängert TextView.
Standardmäßig, Gedrehter text wird von oben nach unten. Wenn Sie android:gravity="unten" ist, dann ist es von unten nach oben gezeichnet.
Technisch, es Narren zugrunde liegenden TextView zu denken, dass es normal rotation (swapping Breite/Höhe in wenigen Orten), während die Zeichnung gedreht.
Es funktioniert auch, wenn in einer xml-layout.
EDIT:
Entsendung eine andere version, hat oben Probleme mit Animationen. Diese neue version besser funktioniert, aber verliert einige TextView Funktionen, wie das Festzelt und ähnliche Spezialitäten.
InformationsquelleAutor der Antwort Pointer Null
Implementiert habe ich dies für meine ChartDroid Projekt. Erstellen
VerticalLabelView.java
:Und in
attrs.xml
:InformationsquelleAutor der Antwort kostmo
Einen Weg diese auch zu erreichen wäre:
InformationsquelleAutor der Antwort Prashast
Dieser arbeitete für mich, einfach nur gut. Als für die senkrecht hinunter Buchstaben - I dont' know.
InformationsquelleAutor der Antwort ERJAN
Versucht, sowohl die der VerticalTextView Klassen in der zugelassenen Antwort, und Sie funktionierte gut.
Aber egal was ich auch versuchte, ich konnte diese position VerticalTextViews in der Mitte der mit layout (ein RelativeLayout, das ist ein Teil ein Element aufgeblasen für ein RecyclerView).
FWIW, nachdem schaut sich um, fand ich yoog568 ist VerticalTextView-Klasse auf GitHub:
https://github.com/yoog568/VerticalTextView/blob/master/src/com/yoog/widget/VerticalTextView.java
war ich in der Lage zu positionieren, wie gewünscht.
InformationsquelleAutor der Antwort albert c braun
Gibt es einige kleinere Dinge zu beachten.
Hängt es vom Zeichensatz bei der Wahl der drehen oder den Weg weisen. zum Beispiel, wenn die Ziel-charset ist Englisch, und der erwartete Effekt aussieht,
können Sie diese Wirkung durch die Zeichnung jedes Zeichen, eins nach dem anderen, kein drehen oder Pfad gebraucht.
müssen Sie möglicherweise drehen oder Weg, um diesen Effekt zu bekommen.
der schwierige Teil ist, wenn Sie versuchen, zu Rendern charset so wie Mongolisch. die Glyphen in der Schrift müssen gedreht werden 90 Grad, so drawTextOnPath() wird ein guter Kandidat zu verwenden.
InformationsquelleAutor der Antwort Zephyr
Folgenden Zeiger Null's Antwort habe ich in der Lage zum Zentrum der text horizontal durch ändern der
onDraw
Methode so:Müssen Sie möglicherweise einen Teil der TextView measuredWidth-Eigenschaft auf center mehrzeilig text.
InformationsquelleAutor der Antwort dequec64
Ich mochte @kostmo Ansatz. Ich habe Sie ein bisschen verändert, weil ich hatte ein Problem, das abschneiden von vertikal gedreht Etikett, wenn ich seine params als
WRAP_CONTENT
. So ein text war nicht vollständig sichtbar.Dies ist, wie ich es gelöst:
Wenn Sie einen text von oben nach unten, dann verwenden Sie
topToDown(true)
Methode.InformationsquelleAutor der Antwort Sa Qada