ViewGroup è anche una View
View e ViewGroup sono due classi. Tutti ereditano da queste 2 classi.
Una risorsa Layout specifica in modo dichiarativo con TAG XML l’aspetto di un elemento grafico.
Cartella di progetto: res/layout/*xml
Sono file XML che si trovano nella cartella RES. Contiene Risorse, non è codice. Non vengono inglobati. Vengono creati da Android Studio, dei Meta Dati.
Un’Actiity → potrebbe avere diversi Layout (Verticale ed Orizzontale)
Per far riferimento agli oggetti, ci basta chiamare R
R è una Wrapper.
E’ quel Wrapper che ci permette di far riferimento ad oggetti di tipo risorse.
Gestire i cambi di configurazione è bene avere 2 tipi diversi di Layout. Vengono caricati a seconda del diverso cambio di configurazione (Verticale e Orizzontale).
Se ci sono più risorse o più Layout disponibili, O.S. Android sceglie il più adeguato.
Adattare i qualificatori è un gran vantaggio. Caricare i diversi formati è un gran vantaggio.
Alta Risoluzione – Bassa Risoluzione
Inflate: leggere il file XML e poi trasformarlo negli oggetti sull’interfaccia.
Constraint Layout: è quello più semplice. “Hello World”. Posizione gli elementi in un modo flessibile. E’ un ViewGroup. E’ il Layout più semplici. Non mette tanti limiti. Permette tanta libertà.
- posizionamento – margini – posizionamento circolare
- permettere dei criteri di visibilità
Layout: ConstraintLayout e LinearLayout
LinearLayout. Un layout lineare, imposta i figli in una singola riga, orizzontale o verticale, agendo sull’attributo android:layout_orientation
La View è organizzata secondo un Layout Lineare verticale che contiene altri 2.
LinearLayout estende il ViewGroup. Si possono specificare “Gravity” e “Weight”, cioè il peso.
Relative Layout
Le View figlie sono posizione in base al posizionamento tra di Loro e rispetto alla View Genitore.
Posiziono l’EditText nel RelativeLayout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="horizontal"
tools:context=".MainActivity2" >
e poi:
<EditText
android:id="@+id/editTextN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/editTextN"
android:text="Button" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/editTextN"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/button"
android:text="Button" />
<EditText
android:id="@+id/editTextN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/editTextN"
android:text="OK" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/button"
android:text="Cancella" />