Wie erhalten Sie den Text eines TextView
zu begründenden Textes (mit bündigem Text auf der linken und rechten Seite)?
Ich habe hier eine mögliche Lösung gefunden , aber sie funktioniert nicht (selbst wenn Sie vertikal-center in center_vertical usw. ändern).
Antworten:
Ich glaube nicht, dass Android die vollständige Rechtfertigung unterstützt.
UPDATE 2018-01-01 : Android 8.0+ unterstützt Ausrichtungsmodi mit
TextView
.quelle
Die @ CommonsWare-Antwort ist korrekt. Android 8.0+ unterstützt "Vollständige Rechtfertigung" (oder einfach "Rechtfertigung", wie es manchmal mehrdeutig bezeichnet wird).
Android unterstützt auch "Flush Left / Right Text Alignment". Zur Unterscheidung siehe den Wikipedia-Artikel zur Begründung . Viele Menschen betrachten das Konzept der „Rechtfertigung“ als eine vollständige Rechtfertigung sowie eine Ausrichtung von links / rechts, nach der sie am Ende suchen, wenn sie eine Ausrichtung von links / rechts durchführen möchten. Diese Antwort erklärt, wie die Ausrichtung von links / rechts erreicht wird.
Es ist möglich, die Ausrichtung von links / rechts spülen zu erreichen (im Gegensatz zur vollständigen Begründung, nach der die Frage gestellt wird). Zur Veranschaulichung verwende ich als Beispiel ein einfaches zweispaltiges Formular (Beschriftungen in der linken Spalte und Textfelder in der rechten Spalte). In diesem Beispiel wird der Text in den Beschriftungen in der linken Spalte rechtsbündig ausgerichtet, sodass sie bündig mit ihren Textfeldern in der rechten Spalte angezeigt werden.
Im XML-Layout können Sie die TextView-Elemente selbst (linke Spalte) nach rechts ausrichten, indem Sie in allen TextViews das folgende Attribut hinzufügen:
Wenn der Text jedoch in mehrere Zeilen eingeschlossen wird, wird der Text in der Textansicht immer noch bündig linksbündig ausgerichtet. Durch Hinzufügen des folgenden Attributs wird der tatsächliche Text in der Textansicht rechtsbündig (links) ausgerichtet:
Das Gravity- Attribut gibt also an, wie der Text in TextView ausgerichtet werden soll. Layout_gravity gibt an, wie das TextView-Element selbst ausgerichtet / gestaltet werden soll.
quelle
android:layout_gravity="center_horizontal|center"
android:gravity="center"
.justify
Um Text in Android zu rechtfertigen, habe ich WebView verwendet
und html.
Ich kann noch keine Bilder hochladen, um dies zu beweisen, aber "es funktioniert für mich".
quelle
view.loadData()
mitview.setBackgroundColor("#00000000")
.view.loadUrl()
Works, währendview.loadData()
dies nicht der Fall ist. Ich habe keine Ahnung, warum letzteres nicht.AKTUALISIERT
Wir haben dafür eine einfache Klasse erstellt. Derzeit gibt es zwei Methoden, um das zu erreichen, wonach Sie suchen. Beide erfordern KEIN WEBVIEW und UNTERSTÜTZEN SPANNABLES .
BIBLIOTHEK : https://github.com/bluejamesbond/TextJustify-Android
UNTERSTÜTZUNG : Android 2.0 bis 5.X.
INSTALLIEREN
BILDSCHIRMFOTO
quelle
TextView
inAndroid O
bietet vollständige Begründung (neue typografische Ausrichtung) selbst.Sie müssen nur Folgendes tun:
Kotlin
Java
Standard ist
JUSTIFICATION_MODE_NONE
.quelle
Sie können JustifiedTextView für Android- Projekte in Github verwenden. Dies ist eine benutzerdefinierte Ansicht, die für Sie gerechtfertigten Text simuliert. Es unterstützt Android 2.0+ und Sprachen von rechts nach links.
quelle
Ich schreibe eine Widget-Basis auf nativer Textansicht, um dies zu tun.
Github
quelle
Ich habe einen Weg gefunden, um dieses Problem zu lösen, aber das mag nicht sehr anmutig sein, aber der Effekt ist nicht schlecht.
Das Prinzip besteht darin, die Leerzeichen jeder Zeile durch ImageSpan mit fester Breite zu ersetzen (die Farbe ist transparent).
Ich habe den Code auf GitHub gestellt: https://github.com/twiceyuan/TextJustification
Überblick:
quelle
XML-Layout: Deklarieren Sie WebView anstelle von TextView
Java-Code: Setzen Sie Textdaten auf WebView
Dies kann Ihr Problem lösen. Es hat voll für mich funktioniert.
quelle
Hier ist, wie ich es gemacht habe, ich denke, die eleganteste Art, die ich konnte. Mit dieser Lösung müssen Sie in Ihren Layouts nur Folgendes tun:
xmlns
Erklärung hinzuTextView
Quelltext-Namespace von Android in Ihren neuen NamespaceTextView
s durchx.y.z.JustifiedTextView
Hier ist der Code. Funktioniert einwandfrei auf meinen Handys (Galaxy Nexus Android 4.0.2, Galaxy Teos Android 2.1). Fühlen Sie sich natürlich frei, meinen Paketnamen durch Ihren zu ersetzen.
/assets/justified_textview.css :
/res/values/attrs.xml :
/res/layout/test.xml :
/src/net/bicou/myapp/widget/JustifiedTextView.java :
Wir müssen das Rendering auf Software einstellen, um einen transparenten Hintergrund für Android 3+ zu erhalten. Daher der Try-Catch für ältere Versionen von Android.
Hoffe das hilft!
PS: Bitte nicht, dass es nützlich sein könnte, dies zu Ihrer gesamten Aktivität auf Android 3+ hinzuzufügen, um das erwartete Verhalten zu erhalten:
android:hardwareAccelerated="false"
quelle
Sehr einfach Das können wir in der XML-Datei tun
quelle
Obwohl der begründete Text noch nicht vollständig ist, können Sie jetzt die Zeilenlängen
android:breakStrategy="balanced"
ab API 23 ausgleichenhttp://developer.android.com/reference/android/widget/TextView.html#attr_android:breakStrategy
quelle
Ich schreibe meine eigene Klasse, um dieses Problem zu lösen. Hier ist es nur, dass Sie die statische Rechtfertigungsfunktion aufrufen müssen, die zwei Argumente akzeptiert
//Hauptaktivität
// TextJustificationClass
// XML
quelle
FILL_HORIZONTAL
ist äquivalent zuCENTER_HORIZONTAL
. Sie können diesen Codeausschnitt im Quellcode von textview sehen:quelle
Für dieses Problem gibt es eine benutzerdefinierte Ansicht. Diese benutzerdefinierte Textansicht unterstützt die Ansicht "Berechtigter Text".
Beute dies: JustifiedTextView
Fügen Sie die obige Klasse zu Ihrem src-Ordner hinzu und verwenden Sie diesen Beispielcode, um sie Ihrem Layout hinzuzufügen:
quelle
siehe hier im Github
Importieren Sie einfach die beiden Dateien "TextJustifyUtils.java" und "TextViewEx.java" in Ihr Projekt.
und
Wenn Sie nun eine normale Textansicht verwenden, wie:
Einfach benutzen
Definieren Sie eine Variable und setzen Sie die Rechtfertigung auf wahr.
quelle
Android Text Justify For TextView XML
Einfach Android Text-Rechtfertigung in XML verwenden. Sie können einfach in Textansicht Widget implementieren.
Standard ist
android:justificationMode="none"
quelle
Ich denke, es gibt zwei Möglichkeiten:
Verwenden Sie etwas wie Pango, das sich über das NDK darauf spezialisiert hat, und rendern Sie Text in eine OpenGL oder eine andere Oberfläche.
Verwenden Sie Paint.measureText () und Freunde, um die Länge der Wörter zu ermitteln und sie manuell auf einer Leinwand in einer benutzerdefinierten Ansicht anzuordnen .
quelle
Wenn Sie auf Android links Text ausrichten und die Hintergrundfarbe nicht abschneiden möchten, versuchen Sie dies. Es hat bei mir funktioniert und konsistente Ergebnisse auf Android, ff, dh & chrome erzielt. Sie müssen jedoch den dazwischen liegenden Platz für den Text messen bei der Berechnung der Polsterung.
Der Hack ist der
padding-right:1000px;
, der den Text ganz nach links drückt.Jeder Versuch, nach links zu gehen oder Code in CSS oder HTML zu rechtfertigen, führt zu einem Hintergrund, der nur halb so breit ist.
quelle
Für die HTML-Formatierung müssen Sie das Webkit nicht aufrufen, sondern können
Html.fromHtml(text)
den Job ausführen .Quelle: http://developer.android.com/guide/topics/resources/string-resource.html
quelle
Android unterstützt noch keine vollständige Begründung. Wir können Webview verwenden und HTML rechtfertigen, anstatt Textview zu verwenden. Es funktioniert so gut. Wenn ihr nicht klar seid, zögern Sie nicht mich zu fragen :)
quelle
WebView
transparent
. Ich habe ein Hintergrundbild.Probieren Sie diese Lösung unter dem folgenden Link aus. Erstellen Sie diese Klasse einfach im Projektordner und verwenden Sie sie. es funktioniert gut für mich :)
Text in einer Android-App mit einem WebView begründen, aber eine TextView-ähnliche Oberfläche präsentieren?
quelle
TextView-Inhaltsbegründung: Die einfachen Leute verwenden einfach android: justificationMode = "inter_word" in Ihrem TextView-Tag.
quelle
Versuchen Sie es mit <
RelativeLayout >
(stellen Sie sicher, dass fill_parent vorhanden ist), und fügen Sie dann einfachandroid:layout_alignParentLeft="true"
und hinzuandroid:layout_alignParentRight="true"
zu den Elementen, die Sie außen LINKS & RECHTS möchten.Schuld, gerechtfertigt!
quelle
Du musst einstellen
und
quelle
Dies rechtfertigt Ihren Text aber nicht wirklich
ist die beste Wahl, die Sie haben.
quelle