RelativeLayout
è un gruppo di viste che mostra le visualizzazioni secondarie in posizioni relative. La posizione di ciascuna vista può essere specificata in relazione agli elementi di pari livello (ad esempio a sinistra o sotto un'altra vista) o in posizioni relative all'area RelativeLayout
principale (ad esempio allineate al basso, a sinistra o al centro).
Nota: per migliorare le prestazioni e il supporto degli strumenti, dovresti creare il tuo layout con ConstraintLayout.
RelativeLayout
è un'utilità molto utile per la progettazione di un'interfaccia utente
perché può eliminare i gruppi di visualizzazioni nidificati e mantenere uniforme la gerarchia del layout, migliorando
le prestazioni. Se ti capita di utilizzare diversi gruppi LinearLayout
nidificati, potresti riuscire a sostituirli con un singolo gruppo RelativeLayout
.
Posizionamento delle viste
RelativeLayout
consente alle viste secondarie di specificare la propria posizione rispetto alla vista principale o tra di loro (specificate dall'ID). Così puoi allineare due elementi con il bordo destro o
crearne uno sotto l'altro, centrato nello schermo, centrato a sinistra e così via. Per impostazione predefinita, tutte le viste secondarie sono disegnate in alto a sinistra nel layout, quindi devi definire la posizione di ogni vista utilizzando le varie proprietà di layout disponibili in RelativeLayout.LayoutParams
.
Alcune delle numerose proprietà di layout disponibili per le visualizzazioni in un RelativeLayout
includono:
android:layout_alignParentTop
- Se
"true"
, il bordo superiore di questa vista corrisponde al bordo superiore dell'elemento principale. android:layout_centerVertical
- Se
"true"
, questo elemento secondario viene centrato verticalmente all'interno dell'elemento principale. android:layout_below
- Posiziona il bordo superiore di questa vista sotto quella specificata con un ID risorsa.
android:layout_toRightOf
- Posiziona il bordo sinistro di questa vista a destra della vista specificata con un ID risorsa.
Questi sono solo alcuni esempi. Tutti gli attributi di layout sono documentati all'indirizzo RelativeLayout.LayoutParams
.
Il valore di ogni proprietà di layout è un valore booleano per attivare una posizione del layout rispetto all'elemento RelativeLayout
principale oppure un ID che fa riferimento a un'altra vista del layout in base al quale deve essere posizionata la vista.
Nel layout XML, le dipendenze rispetto ad altre viste del layout possono essere dichiarate in qualsiasi ordine. Ad esempio, puoi dichiarare che "view1" è posizionato sotto "view2" anche se "view2" è l'ultima visualizzazione dichiarata nella gerarchia. L'esempio seguente illustra questo scenario.
Esempio
Ciascun attributo che controlla la posizione relativa di ciascuna visualizzazione viene enfatizzato.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" > <EditText android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/reminder" /> <Spinner android:id="@+id/dates" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/times" /> <Spinner android:id="@id/times" android:layout_width="96dp" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_alignParentRight="true" /> <Button android:layout_width="96dp" android:layout_height="wrap_content" android:layout_below="@id/times" android:layout_alignParentRight="true" android:text="@string/done" /> </RelativeLayout>
Per informazioni dettagliate su tutti gli attributi di layout disponibili per ogni vista secondaria di un RelativeLayout
, consulta RelativeLayout.LayoutParams
.