Voglio mettere un layout al centro dello schermo.Come centrare una vista all'interno di un layout Android?
risposta
È possibile applicare un centraggio a qualsiasi vista, tra cui un layout, utilizzando l'attributo XML Android:. Layout_gravity". Probabilmente si vuole dare il valore 'center'
È possibile trovare un riferimento di possibili I valori per questa opzione qui: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_gravity
Passo # 1: Wrap qualunque cosa sia che si desidera centrato sullo schermo in un full-schermo RelativeLayout
Passo # 2:. Dare questo punto di vista del bambino (l'uno, che vuoi centrato all'interno dello RelativeLayout
) ilAttributo.
Questo ha funzionato solo per me quando ho inserito l'attributo android: layout_centerInParent = "true" nella vista all'interno di RelativeLayout. –
Cosa fare se si desidera posizionarlo al centro, ma spostarlo verso il basso se esiste il rischio di sovrapposizione con un'altra vista? –
È necessario inserire 'android: layout_centerInParent =" true "' nella vista figlio, non in 'RelativeLayout'. Gli attributi di 'android: layout_ *' influenzano il modo in cui una vista è posizionata e dimensionata all'interno del suo genitore, non come i bambini di una vista sono posizionati e dimensionati al suo interno. – Karu
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content"></ProgressBar>
<TextView
android:layout_below="@id/ProgressBar01"
android:text="@string/please_wait_authenticating"
android:id="@+id/txtText"
android:paddingTop="30px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</RelativeLayout>
Se si desidera centrare una vista, utilizzare questa. In questo caso, TextView deve essere la vista più in basso nel tuo XML perché è layout_height è match_parent.
<TextView
android:id="@+id/tv_to_be_centered"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:gravity="center"
android:text="Some text"
/>
Intendeva mettere il layout al centro, non mettere la vista. –
@IgorG. posizionare un layout e una vista sono gli stessi perché un layout * è una * vista. – FoamyGuy
@Tim Ho pensato che un layout è più simile a un ViewGroup che a un View ... –
sono riuscito a centrare una vista utilizzando
android:layout_centerHorizontal="true"
e
android:layout_centerVertical="true"
params.
Aggiungere android: layout_centerInParent = "true" per elemento che si desidera centrare nel RelativeLayout
Essa opererà per quel codice a volte bisogno di entrambe le proprietà
android:layout_gravity="center"
android:layout_centerHorizontal="true"
risposta Aggiornato: Constraint Layout
Sembra che la tendenza in Android ora sia quella di utilizzare un layout Vincolo. Anche se è abbastanza semplice centrare una vista usando un RelativeLayout
(come hanno mostrato altre risposte), lo ConstraintLayout
è più potente dello RelativeLayout
per i layout più complessi. Quindi vale la pena di imparare come si fa adesso.
Per centrare una vista, è sufficiente trascinare le maniglie su tutti e quattro i lati del genitore.
AFAIK, layout_gravity è solo per LinearLayout, non per i layout arbitrari. – CommonsWare
Come hai detto layout_gravity è solo per LinearLayout e riguardo RelativeLayout perché perché in app voglio incorporare la visualizzazione del testo su ImageView – Vicky
l'ho provato anche con relativelayout e secondo me funziona – ludwigm