Hello World
Hai appena creato la tua prima schermata, adesso tocca riempirla.
Nella sezione precedente Android Studio ha creato un layout denominato activity_master nella cartella res\layout.
Il contenuto predefinito di questa cartella è
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MasterActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
Rimuovi tutto e rimpiazza il contenuto con
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
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">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</FrameLayout>
Come al solito, procediamo riga per riga.
<?xml version="1.0" encoding="utf-8"?>
Questo è un header del file XML. Lo troverai su tutti i tuoi files di risorse. Serve a definire la versione del linguaggio e l’encoding. Sarà sempre uguale e non dovrai mai modificarlo.
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"
Queste tre direttive saranno sempre sul root node del tuo layout. Servono a definire quali XML namespace vuoi utilizzare sul tuo layout. Per adesso è necessario utilizzare solo il primo dei tre, ma presto dovrai utilizzare anche gli altri.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
Ecco il tuo primo layout! Un layout serve a disporre gli elementi sulla UI.
Il FrameLayout è il piu’ semplice di tutti: permette di mostrare uno o piu’ elementi sovrapposti.
android:layout_width e android:layout_height
Come avrai notato ogni elemento deve avere due parametri: android:layout_width e android:layout_height.
Questi due parametri sono necessari per dire ad Android quanto spazio l’elemento deve occupare all’interno del layout
genitore. I possibili valori di questi due attributi sono:
match_parent: occupa tutto lo spazio all’interno del genitore;wrap_content: occupa solo lo spazio necessario all’interno del genitore;xdp: occupa uno spazio predefinito (es. 16dp, 32dp, …). Per approfondimenti ti rimando alla guida ufficiale android
Dato che ogni Activity ha come root layout un FrameLayout, qui stai dicendo ad Android che il tuo FrameLayout
prenderà tutto lo spazio disponibile sia in altezza, che in larghezza all’interno del FrameLayout dell’Activity.
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"/>
Questo è la View (i widget grafici su Android si chiamano View) che ti permette di mostrare del testo a schermo.
Anche qui, come hai appena visto, devi definire android:layout_width e android:layout_height. In questo caso
ho deciso di far prendere al componente tutta la larghezza dello schermo, ma solo lo spazio necessario in altezza.
In più hai un nuovo attributo chiamato android:text. Questo definisce quale sia il testo che vuoi mostrare
all’utente.
android:layout_gravity
Ma a noi così non piace! Vogliamo che Hello World sia al centro dello schermo. Presto fatto!
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Hello World!"/>
In questo caso il layout_width è wrap_content cosi da occupare solo lo spazio necessario; come prima il
layout_height e’ wrap_content così da non occupare tutta l’altezza dello schermo; infine aggiungiamo un nuovo
attributo al nostro widget, che si chiama layout_gravity. Questo attributo serve a posizionare la view all’interno
del layout. Se elimini il testo center, lasciando quindi solo android:layout_gravity="" e posizioni il cursore tra
le due virgolette e premi CTRL + SPAZIO, Android Studio ti darà varie opzioni tra cui scegliere.

Per esperienza, utilizzerai principalmente center_vertical, center_horizontal e center che, rispettivamente,
allineano il componente al centro verticalmente, al centro orizzontalmente o al centro di tutto il contenitore.
A volte dovrai utilizzare anche top, bottom, start e end per posizionare il componente rispettivamente in alto,
in basso, all’inizio e alla fine del contenitore.
ATTENZIONE ci sono due attributi simili per gestire la posizione del contenuto: layout_gravity e gravity.
L’attributo layout_gravity serve a posizione il componente all’interno del contenitore, mentre l’attributo gravity
serve a posizionare il contenuto del tuo widget (nel caso della TextView, il testo “Hello World”), all’interno del tuo
componente stesso! Prova a settare layout_width e layout_gravity su match_parent e gioca un po’ con l’attributo
gravity per capire come funziona.
NOTA spesso puoi trovare su Android left oppure start e right oppure end. Questo è dovuto al fatto che
Android, nelle prime versioni, non supportava rtl (right-to-left) layouts. Per esempio, nella cultura araba, ma non
è l’unica, le “pagine” vengono lette da destra verso sinistra, quindi i contenuti vengono scansionati dall’occhio umano
a partire da destra verso sinistra. Android raccomanda di utilizzare sempre start o end in modo da poter rendere
accessibile i contenuti dell’app al maggior numero di utenti possibili.
Inizia a prendere dimestichezza con FrameLayout e TextView leggendo un po’ quali sono gli attributi disponibili e provandoli sull’IDE.