Risposte:
Penso che tu stia facendo questo: android:layout_width = "wrap_content"
se questo è il caso, fai questo:android:layout_width = "match_parent"
In generale, android:gravity="right"
è diverso da android:layout_gravity="right"
.
Il primo influenza la posizione del testo stesso all'interno della Vista, quindi se vuoi che sia allineato a destra, allora layout_width=
dovrebbe essere uno "fill_parent"
o "match_parent"
.
Il secondo influenza la posizione della Vista all'interno del suo genitore, in altre parole - allineando l'oggetto stesso (casella di modifica o vista di testo) all'interno della vista principale.
La soluzione migliore è quella più semplice e quella che modifica meno il comportamento del codice .
E se riesci a risolvere questo problema solo con 2 Proprietà sul tuo TextView
?
Invece di dover modificare le tue LinearLayout
proprietà che forse possono alterare il comportamento dei LinearLayout
bambini?
In questo modo, non è necessario modificare LinearLayout
proprietà e comportamento, è sufficiente aggiungere le due seguenti proprietà alla destinazione TextView
:
android:gravity="right"
android:textAlignment="gravity"
Cosa sarebbe meglio cambiare solo il tuo obiettivo per risolvere la tua soluzione invece di avere la possibilità di causare un altro problema in futuro, modificando tuo padre target? pensaci :)
TextView
proprietà? - È possibile controllare la proprietà dal riferimento qui: developer.android.com/reference/android/view/…
android:layout_gravity
viene utilizzato per allineare la vista del testo rispetto al layout principale.
android:gravity
viene utilizzato per allineare il testo all'interno della vista testo.
Sei sicuro di voler allineare il testo all'interno della vista di testo a destra o vuoi spostare la vista di testo stessa a destra rispetto al layout principale o stai cercando di ottenere entrambi
Assicurati di non utilizzare in android:layout_width="wrap_content"
tal caso, quindi non sarà possibile impostare la gravità perché non hai abbastanza spazio per allineare il testo. Invece usaandroid:layout_width="fill_parent"
android:gravity="right"
Viene utilizzato fondamentalmente nel layout lineare, quindi è necessario impostare la larghezza di TextView o EditText come
android:layout_width = "match_parent"
e
Quando si lavora in layout relativo, utilizzare
android:layout_alignParentRight="true"
Crea (LinearLayout) android:layout_width="match_parent"
e TextViewandroid:layout_gravity="right"
Se è dentro RelativeLayout
puoi usareandroid:layout_toRightOf="@id/<id_of_desired_item>"
O
Se si desidera allineare right
all'angolo del dispositivo il luogoandroid:layout_alignParentRight="true"
Vorrei spiegare il concetto di gravità usando WEB perché molti sviluppatori ne sono consapevoli.
android_layout_gravity
si comporta float:left|right|top|bottom
Considerando che il android_gravity
lavoro cometext_align:centre|left|right
In Android float è android_layout_gravity e text_align: è android_gravity.
E android_layout_gravity si applica rispetto al genitore. dove as android_gravity si applica al suo contenuto figlio o interiore.
Nota android_gravity funziona solo quando la sua vista è match_parent (quando ha spazio al centro).
Di seguito funziona per me:
<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" />
Nota le impostazioni android:layout_alignParentEnd
e android:textAlignment
del secondo TextView.
questo dovrebbe servire allo scopo
android:textAlignment="textStart"
Nel mio caso, stavo usando Relative Layout
per aemptyString
Dopo aver lottato su questo per un'ora. Solo questo ha funzionato per me:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
o layout_toEndOf
entrambi funzionano, ma per supportarlo meglio, ho usato entrambi.
Per rendere più chiaro:
Questo era quello che stavo cercando di fare:
E questo era l'output dell'emulatore
Disposizione:
<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" />
Notare che:
android:layout_width="wrap_content"
lavoriGravity
non viene utilizzato<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>
allinea il numero uno al centro sia in orizzontale che in verticale.
prova ad aggiungere android:gravity="center"
inTextView