Wie erhält man den Text eines TextView
im Blocksatz (mit Text bündig an den linken und rechten Seiten)?
Ich habe eine mögliche Lösung hier gefunden, aber es funktioniert nicht (selbst wenn man vertical-center in center_vertical ändert, usw).
Wie erhält man den Text eines TextView
im Blocksatz (mit Text bündig an den linken und rechten Seiten)?
Ich habe eine mögliche Lösung hier gefunden, aber es funktioniert nicht (selbst wenn man vertical-center in center_vertical ändert, usw).
Ich glaube nicht, dass Android die volle Rechtfertigung unterstützt.
UPDATE 2018-01-01: Android 8.0+ unterstützt Rechtfertigungsmodi mit TextView
.
Bei weiterer Analyse könnten Sie android:gravity="fill_horizontal" ausprobieren. Das wird als "Erweitern Sie die horizontale Größe des Objekts bei Bedarf, damit es seinen Container vollständig füllt" beschrieben, aber ich weiß nicht, wie sie den Text "wachsen" lassen.
Android:gravity="fill_horizontal" hat auch nicht funktioniert. Es scheint, dass Android letztendlich keine Textausrichtung unterstützt, na ja :)
Nein, Sie können die Eigenschaft nicht wie die Schwerkraft festlegen. Aber Sie können die Textausrichtung immer noch festlegen, indem Sie WebView anstelle von TextView verwenden. Sie können sich seal.io/2010/12/only-way-how-to-align-text-in-block-in.html ansehen. (Entnommen von stackoverflow.com/questions/5976627/…)
TextView
in Android O bietet selbst volle Rechtfertigung (neue typografische Ausrichtung).
Du musst einfach Folgendes tun:
Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
textView.justificationMode = JUSTIFICATION_MODE_INTER_WORD
}
Java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
textView.setJustificationMode(JUSTIFICATION_MODE_INTER_WORD);
}
XML
Standardmäßig ist JUSTIFICATION_MODE_NONE
(none
in xml).
Ich konnte die Dokumentation für .setJustify nicht finden, aber stattdessen habe ich das gefunden, developer.android.com/reference/android/widget/… Fehlt mir etwas oder hat das Android-Team die Implementierung von setJustify auf setJustificationMode geändert?
Die Antwort von @CommonsWare ist korrekt. Android 8.0+ unterstützt "Vollständige Ausrichtung" (oder einfach "Ausrichtung", wie es manchmal irreführend genannt wird).
Android unterstützt auch "Linksbündige/Rechtsbündige Textausrichtung". Siehe den Wikipedia-Artikel über Ausrichtung für den Unterschied. Viele Leute betrachten den Begriff 'Ausrichtung' als umfassend für Vollausrichtung sowie Links-/Rechts-Textausrichtung, nach der sie suchen, wenn sie eine Links-/Rechts-Textausrichtung erreichen möchten. Diese Antwort erklärt, wie man die Links-/Rechts-Textausrichtung erreichen kann.
Es ist möglich, Links-/Rechts-Textausrichtung zu erreichen (im Gegensatz zur Vollausrichtung, nach der die Frage fragt). Um dies zu demonstrieren, werde ich ein einfaches 2-Spalten-Formular verwenden (Beschriftungen in der linken Spalte und Textfelder in der rechten Spalte) als Beispiel. In diesem Beispiel wird der Text in den Beschriftungen in der linken Spalte rechts ausgerichtet, sodass sie bündig mit ihren Textfeldern in der rechten Spalte erscheinen.
In der XML-Layoutdatei können Sie die TextView-Elemente selbst (die linke Spalte) nach rechts ausrichten, indem Sie das folgende Attribut zu allen TextViews hinzufügen:
...
Wenn der Text jedoch in mehreren Zeilen umgebrochen wird, wäre der Text immer noch links ausgerichtet innerhalb des TextViews. Durch das Hinzufügen des folgenden Attributs wird der tatsächliche Text innerhalb des TextViews rechts ausgerichtet (ungerade links):
...
So legt das gravity-Attribut fest, wie der Text innerhalb des TextViews ausgerichtet wird, das layout_gravity-Attribut legt fest, wie das TextView-Element selbst ausgerichtet/layoutet wird.
Wenn ich das richtig verstehe und angesichts der Ergebnisse des Tests, bewirkt dies nur, dass der Text links oder rechts ausgerichtet wird. Rechtfertigt das nicht den Text?
Ausgezeichnet. Nur um hinzuzufügen, wenn Sie eine Zentrierung wünschen, können Sie Folgendes tun android:layout_gravity="center_horizontal|center"
android:gravity="center"
.
Definitiv funktioniert für meinen Fall auf inputtext und textview für die arabische Sprache von rechts nach links Eingabe und Anzeige
Um Text in Android zu rechtfertigen, habe ich WebView verwendet
setContentView(R.layout.main);
WebView view = new WebView(this);
view.setVerticalScrollBarEnabled(false);
((LinearLayout)findViewById(R.id.inset_web_view)).addView(view);
view.loadData(getString(R.string.hello), "text/html; charset=utf-8", "utf-8");
und HTML.
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc pellentesque, urna
nec hendrerit pellentesque, risus massa
]]>
Ich kann noch keine Bilder hochladen, um es zu beweisen, aber "es funktioniert für mich".
Schöne Lösung hier. Just so you know, you don't need most of the extra HTML. Das body-Tag mit Textausrichtung reicht aus.
Dies funktioniert gut. Beachten Sie, dass Sie den Hintergrund transparent machen können, indem Sie view.loadData()
mit view.setBackgroundColor("#00000000")
folgen.
Wir haben eine einfache Klasse dafür erstellt. Derzeit gibt es zwei Methoden, um zu erreichen, was Sie suchen. Beide erfordern KEINEN WEBVIEW und UNTERSTÜTZEN SPANNABLES.
BIBLIOTHEK: https://github.com/bluejamesbond/TextJustify-Android
UNTERSTÜTZT: Android 2.0 bis 5.X
EINRICHTUNG
// Bitte besuchen Sie Github für die neuesten Einrichtungsanweisungen.
SCREENSHOT
Ist wirklich hilfreich, aber wenn ich es benutze, behalten meine TextViews nicht das ursprüngliche Format, ich meine: Abstände, Textstil und ich glaube, dass auch die Textgröße nicht beibehalten wird. Bitte arbeiten Sie weiter daran, es sollte eine wirklich große Hilfe sein
Nun, ich kann diese Klassen nicht erstellen. Eine von ihnen hatte keinen Packungsnamen, der andere gibt einen gelben Fehler aus. Eigentlich kann ich nicht vertrauen.
Schöne Bibliothek, aber ich weiß immer noch nicht, wie ich Textformatierungen mit dieser Bibliothek hinzufügen kann.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
@Jimbo Antwort ist definitiv korrekt und funktioniert für meinen Fall bei InputText und TextView für die arabische Sprache von rechts nach links für Eingabe und Anzeige. Aber für den Eingabetext musste ich auch `gravity="right"` hinzufügen.
0 Stimmen
Sie können github.com/pouriaHemmati/JustifiedTextView verwenden
0 Stimmen
github.com/amilcar-sr/JustifiedTextView kann verwendet werden