Qual è la differenza tra Android:textAlignment
e Android:gravity
?
Tutto quello che posso vedere è che textAlignment è un membro della classe View e la gravità è il membro della classe TextView. Quindi per TextView e le sue sottoclassi puoi usare la gravità mentre puoi usare textAlignment per tutte le viste.
Dato che TextView e le sue sottoclassi necessitano di alcune funzionalità di allineamento del testo, puoi vedere che ci sono più opzioni in gravità dove in TextAlignment ci sono solo opzioni di base. Anche se è solo una mia ipotesi perché non ho trovato alcuna documentazione chiara sulla differenza.
Puoi vedere questi due link della documentazione: textAlignment e gravità .
Con API 15, Android:textAlignment
potrebbe non avere il risultato desiderato. Lo snippet di seguito tenta di centrare il primo oggetto TextView
usando Android:textAlignment="center"
. Il secondo usa Android:gravity="center_horizontal"
. textAlignment
non ha alcun effetto mentre la gravità funziona bene. Con API 17+, textAlignment
centra il testo come previsto.
Per essere certo che il tuo testo sia allineato correttamente con tutte le versioni, andrei con la gravità.
<LinearLayout
Android:layout_width="50dp"
Android:layout_height="match_parent"
Android:orientation="vertical">
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:text="Fri"
Android:textAlignment="center"
Android:textSize="16sp" />
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="29"
Android:gravity="center_horizontal"
Android:textSize="18sp" />
</LinearLayout>
Layout risultante nell'API 15:
Layout risultante in API 17+:
Per quanto ho visto textAlignment sembra essere in gran parte inutilizzato. Con la sua descrizione, dovrebbe fare solo l'allineamento a destra o a sinistra. La gravità sembra essere un allineamento testuale migliorato.
Un altro punto non esplicitamente menzionato:
Se l'applicazione ha il supporto RTL disabilitato con ad es. Android:supportsRtl="false"
in manifest application
tag, quindi View
textAlignment
non funziona per il posizionamento del testo mentre TextView
gravity
funziona.
Ancora un altro motivo per preferire gravity
.