Antworten:
Ich denke, dass Sie dies tun: android:layout_width = "wrap_content"
Wenn dies der Fall ist, tun Sie dies:android:layout_width = "match_parent"
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.
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 LinearLayout
Eigenschaften ändern zu müssen , kann dies möglicherweise das Verhalten von LinearLayout
Kindern ändern?
Auf diese Weise müssen Sie LinearLayout
Eigenschaften 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 :)
TextView
Immobilie zugreifen ? - Sie können die Eigenschaft von der Referenz hier überprüfen: developer.android.com/reference/android/view/…
android:layout_gravity
wird verwendet, um die Textansicht in Bezug auf das übergeordnete Layout auszurichten.
android:gravity
wird 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?
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"
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"
Erstellen Sie das (LinearLayout) android:layout_width="match_parent"
und das TextViewandroid:layout_gravity="right"
Wenn es in ist RelativeLayout
, können Sie verwendenandroid:layout_toRightOf="@id/<id_of_desired_item>"
Oder
Wenn Sie right
den Ort an der Ecke des Geräts ausrichten möchtenandroid:layout_alignParentRight="true"
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_gravity
arbeiten 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).
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_alignParentEnd
und android:textAlignment
Einstellungen der zweiten Textansicht.
Dies sollte den Zweck erfüllen
android:textAlignment="textStart"
In meinem Fall habe ich Relative Layout
fü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_toRightOf
oder layout_toEndOf
beides funktioniert, aber um es besser zu unterstützen, habe ich beide verwendet.
Um es klarer zu machen:
Das habe ich versucht:
Und das war die Ausgabe des Emulators
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:
android:layout_width="wrap_content"
funktioniertGravity
ist nicht benutzt<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.
versuchen , hinzuzufügen , android:gravity="center"
inTextView
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"