468 Stimmen

Android TextView Text rechtfertigen

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).

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

0 Stimmen

292voto

CommonsWare Punkte 950864

Ich glaube nicht, dass Android die volle Rechtfertigung unterstützt.

UPDATE 2018-01-01: Android 8.0+ unterstützt Rechtfertigungsmodi mit TextView.

5 Stimmen

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.

8 Stimmen

Android:gravity="fill_horizontal" hat auch nicht funktioniert. Es scheint, dass Android letztendlich keine Textausrichtung unterstützt, na ja :)

6 Stimmen

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/…)

178voto

Jaydipsinh Zala Punkte 16861

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).

4 Stimmen

Hoffen wir, dass es wieder in die Support-Bibliothek portiert wird dann O:)

2 Stimmen

Bitte füge hier die Bibliothek hinzu !!

1 Stimmen

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?

167voto

plainjimbo Punkte 6970

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.

13 Stimmen

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?

15 Stimmen

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".

0 Stimmen

Definitiv funktioniert für meinen Fall auf inputtext und textview für die arabische Sprache von rechts nach links Eingabe und Anzeige

141voto

Konrad Nowicki Punkte 1909

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".

3 Stimmen

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.

5 Stimmen

Dies funktioniert gut. Beachten Sie, dass Sie den Hintergrund transparent machen können, indem Sie view.loadData() mit view.setBackgroundColor("#00000000") folgen.

0 Stimmen

Ich war jedoch nicht erfolgreich darin, eine benutzerdefinierte Schriftart/Schriftart zu laden. Ich habe diesen und diesen Vorschlag ausprobiert, jedoch ohne Erfolg.

101voto

Mathew Kurian Punkte 5818

AKTUALISIERT

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

Comparison.png

0 Stimmen

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

0 Stimmen

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.

0 Stimmen

Schöne Bibliothek, aber ich weiß immer noch nicht, wie ich Textformatierungen mit dieser Bibliothek hinzufügen kann.

CodeJaeger.com

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.

Powered by:

X