RelativeLayout è un gruppo di oggetti View che mostra le visualizzazioni secondarie in posizioni relative. La posizione di ogni visualizzazione può essere specificata come relativa agli elementi di pari livello (ad esempio a sinistra o sotto un'altra visualizzazione) o in posizioni relative all'area RelativeLayout principale (ad esempio allineata in basso, a sinistra o al centro).
Nota: Per prestazioni e supporto degli strumenti migliori, ti consigliamo di creare il layout con ConstraintLayout.
RelativeLayout è un'utilità molto potente per la progettazione di un'interfaccia utente perché può eliminare i gruppi di visualizzazioni nidificati e mantenere piatta la gerarchia dei layout, migliorando le prestazioni. Se utilizzi diversi gruppi LinearLayout nidificati, potresti sostituirli con un singolo RelativeLayout.
Posizionamento delle visualizzazioni
RelativeLayout consente alle viste bambino di specificare la propria posizione rispetto alla vista genitore o l'una rispetto all'altra (specificata dall'ID). In questo modo puoi allineare due elementi in base al bordo destro o posizionarne uno sotto l'altro, al centro dello schermo, al centro a sinistra e così via. Per impostazione predefinita, tutte le visualizzazioni secondarie vengono disegnate in alto a sinistra del layout, pertanto devi definire la posizione di ogni visualizzazione utilizzando le varie proprietà di layout disponibili in RelativeLayout.LayoutParams.
Di seguito sono riportate alcune delle numerose proprietà di layout disponibili per le visualizzazioni in un RelativeLayout:
android:layout_alignParentTop- Se
"true", il bordo superiore di questa visualizzazione corrisponde al bordo superiore dell'elemento principale. android:layout_centerVertical- Se
"true", questo elemento secondario viene centrato verticalmente all'interno del relativo elemento principale. android:layout_below- Posiziona il bordo superiore di questa visualizzazione sotto la visualizzazione specificata con un ID risorsa.
android:layout_toRightOf- Posiziona il bordo sinistro di questa visualizzazione a destra della visualizzazione 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 attivare una posizione di layout relativa all'elemento principale RelativeLayout o un ID che fa riferimento a un'altra visualizzazione nel layout rispetto alla quale la visualizzazione deve essere posizionata.
Nel layout XML, le dipendenze da altre visualizzazioni nel layout possono essere dichiarate in qualsiasi ordine. Ad esempio, puoi dichiarare che "view1" sia posizionata sotto "view2" anche se "view2" è l'ultima visualizzazione dichiarata nella gerarchia. L'esempio seguente illustra uno scenario di questo tipo.
Esempio
Vengono evidenziati tutti gli attributi che controllano la posizione relativa di ogni visualizzazione.
<?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 bambino di un RelativeLayout, consulta RelativeLayout.LayoutParams.