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?

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"


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.


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


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?


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


11

Für den Fall, dass jemand noch braucht

android:gravity="end"

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"


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"

5

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


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"


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


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.


2

Sie können verwenden:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"


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

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"


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.



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"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.