RelativeLayout
è un gruppo di viste che mostra le visualizzazioni secondarie in posizioni relative. La posizione di ogni vista può essere specificata come relativa a elementi di pari livello (ad esempio a sinistra o sotto un'altra vista) o in posizioni relative all'area RelativeLayout
principale (ad esempio allineata in basso, a sinistra o al centro).
Nota: per un miglior rendimento e un migliore supporto degli strumenti, devi invece creare il layout con ConstraintLayout.
![](https://developer.android.google.cn/static/images/ui/relativelayout.png?authuser=1&hl=it)
Un'RelativeLayout
è un'utilità molto potente per la progettazione di un'interfaccia utente,
poiché può eliminare i gruppi di viste nidificate e mantenere piatta la gerarchia del layout, migliorando
le prestazioni. Se ti ritrovi a utilizzare più gruppi LinearLayout
nidificati, potresti essere in grado di sostituirli con un singolo RelativeLayout
.
Viste di posizionamento
RelativeLayout
consente alle viste secondarie di specificare la propria posizione rispetto alla vista principale o tra loro (specificate dall'ID). In questo modo puoi allineare due elementi con il bordo destro,
o posizionarne uno sotto l'altro, centrato sullo 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 visualizzazione corrisponde al bordo superiore dell'immagine principale. android:layout_centerVertical
- Se
"true"
, centra questo asset secondario 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 di quella specificata con un ID risorsa.
Questi sono solo alcuni esempi. Tutti gli attributi di layout sono documentati in RelativeLayout.LayoutParams
.
Il valore di ogni proprietà di layout è un valore booleano per abilitare una posizione del layout relativa all'elemento RelativeLayout
principale o un ID che fa riferimento a un'altra vista del layout in base alla quale deve essere posizionata la vista.
Nel layout XML, le dipendenze rispetto ad altre visualizzazioni nel layout possono essere dichiarate in qualsiasi ordine. Ad esempio, puoi dichiarare che "view1" è posizionata sotto "view2" anche se "view2" è l'ultima vista dichiarata nella gerarchia. L'esempio seguente illustra questo scenario.
Esempio
Viene enfatizzato ogni attributo che controlla la posizione relativa di ogni vista.
![](https://developer.android.google.cn/static/images/ui/sample-relativelayout.png?authuser=1&hl=it)
<?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 dettagli su tutti gli attributi di layout disponibili per ogni vista secondaria di un RelativeLayout
, consulta RelativeLayout.LayoutParams
.