Richten Sie den Text in Android TextView nach rechts aus

215

Ich habe eine TextViewin meiner Bewerbung. Ich möchte den Text darin rechts ausrichten. Ich habe versucht hinzuzufügen:

android:gravity="right"

Aber das funktioniert bei mir nicht.

Was könnte ich falsch machen?

Bishan
quelle

Antworten:

193

Ich denke, dass Sie dies tun: android:layout_width = "wrap_content"
Wenn dies der Fall ist, tun Sie dies:android:layout_width = "match_parent"

ein fairer Spieler
quelle
2
@Bishan füllen wird den Rest des Raumes füllen, Match wird es gleich der Breite des Elternteils setzen
Troy Cosentino
11
Tatsächlich sind fill_parent und match_parent dasselbe. Der Name wurde in match_parent geändert, weil fill_parent anscheinend die Leute verwirrte.
Edward Falk
158

Im Allgemeinen android:gravity="right"unterscheidet sich von android:layout_gravity="right".

Der erste wirkt sich auf die Position des Texts selbst in der Ansicht aus. Wenn Sie also möchten, dass er rechtsbündig ausgerichtet ist, layout_width=sollte er entweder "fill_parent"oder sein "match_parent".

Die zweite betrifft die Position der Ansicht innerhalb des übergeordneten Elements, dh das Objekt selbst (Bearbeitungsfeld oder Textansicht) in der übergeordneten Ansicht ausrichten.

Wiztrail
quelle
83

Die bessere Lösung ist die einfachste und die, die Ihr Codeverhalten weniger verändert .

Was ist, wenn Sie dieses Problem nur mit 2 Eigenschaften auf Ihrem lösen können TextView?

Anstatt Ihre LinearLayoutEigenschaften ändern zu müssen , kann dies möglicherweise das Verhalten von LinearLayoutKindern ändern?

Auf diese Weise müssen Sie LinearLayoutEigenschaften und Verhalten nicht ändern, sondern nur die beiden folgenden Eigenschaften zu Ihrem Ziel hinzufügen TextView:

android:gravity="right"
android:textAlignment="gravity"

Was wäre besser, wenn Sie nur Ihr Ziel ändern würden, um Ihre Lösung zu lösen, anstatt die Chance zu haben, in Zukunft ein weiteres Problem zu verursachen und Ihren Zielvater zu modifizieren? Denk darüber nach :)

Paulo Roberto Rosa
quelle
Ich erhalte die Fehlermeldung, dass für die Ressource 'textAlignment' im Paket android keine Ressourcen-ID gefunden wurde.
Anu
Sie sind sicher, dass Sie auf eine TextViewImmobilie zugreifen ? - Sie können die Eigenschaft von der Referenz hier überprüfen: developer.android.com/reference/android/view/…
Paulo Roberto Rosa
4
textAlignment wurde in API Level 17 (Android 4.2) hinzugefügt. Ihr Emulator / Gerät muss 4.2+ ausführen, damit dies funktioniert.
Thanhtd
Ich habe versucht, diese textAlignment-Eigenschaft in Android 4.1.2 zu verwenden, und habe die Fehlermeldung "Keine Ressourcen-ID für Attribut 'textAlignment' gefunden" erhalten. Ich habe die Antwort auf diesen Fehler hier gefunden . Stackoverflow.com/a/20176191/723507 . Wie können Sie es in 4.0.3 verwenden?
Thanhtd
20

android:layout_gravitywird verwendet, um die Textansicht in Bezug auf das übergeordnete Layout auszurichten. android:gravitywird verwendet, um den Text in der Textansicht auszurichten.

Sind Sie sicher, dass Sie versuchen, den Text in der Textansicht nach rechts auszurichten, oder möchten Sie die Textansicht selbst in Bezug auf das übergeordnete Layout nach rechts verschieben, oder möchten Sie beide erreichen?

Rogerstein
quelle
Ich versuche, den Text in der Textansicht nach rechts auszurichten
Bishan
11

Das folgende Code-Snippet:

android:textAlignment="textEnd"
android:layout_gravity="end"

funktioniert gut für mich

Fey Agape
quelle
11

Für den Fall, dass jemand noch braucht

android:gravity="end"
npk
quelle
Wofür ist das?
Gumuruh
In LTR wird der Text nach rechts und in RTL nach links ausgerichtet
npk
8

Stellen Sie sicher, dass Sie nicht verwenden, android:layout_width="wrap_content"wenn dies der Fall ist. In diesem Fall kann die Schwerkraft nicht eingestellt werden, da nicht genügend Platz für die Ausrichtung des Texts vorhanden ist. Verwenden Sie stattdessenandroid:layout_width="fill_parent"

Lalit Poptani
quelle
7
android:gravity="right"

Es wird grundsätzlich im linearen Layout verwendet, daher müssen Sie die Breite von TextView oder EditText als festlegen

android:layout_width = "match_parent"

und

Wenn Sie im relativen Layout arbeiten, verwenden Sie

android:layout_alignParentRight="true"
Kushal Ramola
quelle
5

Erstellen Sie das (LinearLayout) android:layout_width="match_parent"und das TextViewandroid:layout_gravity="right"

Augustus Francis
quelle
5

Wenn es in ist RelativeLayout, können Sie verwendenandroid:layout_toRightOf="@id/<id_of_desired_item>"

Oder

Wenn Sie rightden Ort an der Ecke des Geräts ausrichten möchtenandroid:layout_alignParentRight="true"

user2342517
quelle
4

Lassen Sie mich das Schwerkraftkonzept mit WEB erklären, da sich viele Entwickler dessen bewusst sind.

android_layout_gravity verhält float:left|right|top|bottom

Während android_gravityarbeiten alstext_align:centre|left|right

In Android float ist android_layout_gravity und text_align: ist android_gravity.

Und android_layout_gravity gilt relativ zum übergeordneten Element. Dabei gilt android_gravity für den untergeordneten oder inneren Inhalt.

Beachten Sie, dass android_gravity nur funktioniert, wenn seine Ansicht match_parent ist (wenn Platz zum Zentrieren vorhanden ist).

Zar E Ahmer
quelle
3

Unten funktioniert für mich:

<TextView
    android:id="@+id/tv_username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sarah" />

<TextView
    android:id="@+id/tv_distance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tv_username"
    android:layout_alignParentEnd="true"
    android:layout_toEndOf="@+id/tv_username"
    android:text="San Marco"
    android:textAlignment="viewEnd" />

Bitte beachten Sie die android:layout_alignParentEndund android:textAlignmentEinstellungen der zweiten Textansicht.

David Cheung
quelle
2

Sie können verwenden:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
Pablo
quelle
2

Dies sollte den Zweck erfüllen

android:textAlignment="textStart"

masoud Cheragee
quelle
2

In meinem Fall habe ich Relative Layoutfür eine verwendetemptyString

Nachdem ich eine Stunde lang damit gekämpft hatte. Nur das hat bei mir funktioniert:

android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"

layout_toRightOfoder layout_toEndOfbeides funktioniert, aber um es besser zu unterstützen, habe ich beide verwendet.

Um es klarer zu machen:

Das habe ich versucht:

Geben Sie hier die Bildbeschreibung ein

Und das war die Ausgabe des Emulators

Geben Sie hier die Bildbeschreibung ein

Layout:

<TextView
    android:id="@+id/welcome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:text="Welcome "
    android:textSize="16sp" />
<TextView
    android:id="@+id/username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/welcome"
    android:layout_toRightOf="@id/welcome"
    android:text="@string/emptyString"
    android:textSize="16sp" />

Beachte das:

  1. android:layout_width="wrap_content" funktioniert
  2. Gravity ist nicht benutzt
Rohit Sharma
quelle
1

Ich hatte auch das gleiche Problem und stellte fest, dass das Problem auftrat, da die layout_width der TextView einen wrap_content hatte. Sie müssen layout_width als match_parent und den Android haben: Gravity = "Gravity"

Arup Saha
quelle
1
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

  <TextView
    android:id="@+id/tct_postpone_hour"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_gravity="center"
    android:gravity="center_vertical|center_horizontal"
    android:text="1"
    android:textSize="24dp" />
</RelativeLayout>

macht Nummer eins in der Mitte sowohl horizontal als auch vertikal ausgerichtet.

Alp Altunel
quelle
0

versuchen , hinzuzufügen , android:gravity="center"inTextView

TheGreenGoblen
quelle
0

Ich habe in meinem Fall das Attribut "layout_alignRight" verwendet.

android:layout_alignRight="@+id/myComponentId"

Wenn Sie einen rechten Rand hinzufügen möchten, setzen Sie einfach das Attribut "Layout_Margin Right" auf "20dp", zum Beispiel im Text:

android:layout_marginRight="20dp"
Laurent
quelle