Concetti e implementazione di Jetpack Compose
Android Studio supporta una serie di attributi XML nello spazio dei nomi tools
che attivano funzionalità in fase di progettazione, ad esempio il layout da mostrare in un frammento, o
comportamenti in fase di compilazione, ad esempio la modalità di riduzione da applicare alle risorse XML. Quando crei l'app, gli strumenti di compilazione rimuovono questi attributi in modo che non influiscano sulle dimensioni dell'APK o sul comportamento di runtime.
Per utilizzare questi attributi, aggiungi lo spazio dei nomi tools all'elemento principale di ogni file XML in cui vuoi utilizzarli, come mostrato di seguito:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Attributi di gestione degli errori
Il seguente attributo consente di eliminare i messaggi di avviso di lint:
tools:targetApi
Destinato a: qualsiasi elemento
Utilizzato da: Lint
Questo attributo funziona come l'annotazione @TargetApi nel codice Java. Consente di specificare il livello API (come numero intero o nome in codice)
che supporta questo elemento.
Indica agli strumenti che ritieni che questo elemento e tutti i relativi elementi secondari
vengano utilizzati solo al livello API specificato o a un livello superiore. In questo modo, lint non ti avviserà
se l'elemento o i relativi attributi non sono disponibili al livello API specificato
come minSdkVersion.
Ad esempio, potresti utilizzare questo attributo perché GridLayout è disponibile solo
nel livello API 14 e versioni successive, ma sai che questo layout non viene utilizzato
nel tuo codice per le versioni precedenti:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
Tuttavia, tieni presente che ti consigliamo di utilizzare GridLayout
dalla libreria di supporto.
Attributi di visualizzazione in fase di progettazione
I seguenti attributi definiscono le caratteristiche del layout visibili solo nell'anteprima del layout di Android Studio.
tools: anziché android:
Destinato a: <View>
Utilizzato da:editor layout di Android Studio
Puoi inserire dati di esempio nell'anteprima del layout utilizzando il prefisso tools:
anziché android: con qualsiasi attributo <View> del framework Android.
Ciò è utile quando il valore dell'attributo non viene compilato fino al runtime e vuoi vedere l'effetto nell'anteprima del layout.
Ad esempio, se il valore dell'attributo android:text viene impostato in fase di runtime o se vuoi visualizzare il layout con un valore diverso da quello predefinito, puoi aggiungere tools:text per specificare un testo solo per l'anteprima del layout.
tools:text
imposta "Google Voice" come valore per l'anteprima del layout.Puoi aggiungere sia l'attributo spazio dei nomi android:, utilizzato in fase di runtime, sia l'attributo corrispondente tools:, che esegue l'override dell'attributo di runtime solo nell'anteprima del layout.
Puoi anche utilizzare un attributo tools: per annullare un'impostazione dell'attributo solo per l'anteprima del layout. Ad esempio, se hai un FrameLayout con due figli,
ma vuoi visualizzarne solo uno nell'anteprima del layout, puoi impostarne uno
in modo che sia invisibile nell'anteprima del layout, come mostrato qui:
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="First" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second" tools:visibility="invisible" />
Quando utilizzi l'editor di layout nella visualizzazione struttura, la finestra Proprietà ti consente di modificare alcuni attributi della visualizzazione in fase di progettazione. Ogni attributo in fase di progettazione è indicato con
un'icona a forma di chiave
accanto al
nome dell'attributo per distinguerlo dall'attributo reale con lo stesso nome.
tools:context
Destinato a: qualsiasi radice <View>
Utilizzato da: Lint, editor layout di Android Studio
Questo attributo dichiara a quale attività è associato questo layout per
impostazione predefinita. Ciò consente di attivare funzionalità nell'editor o nell'anteprima del layout che richiedono
la conoscenza dell'attività, ad esempio il tema del layout nell'anteprima
e dove inserire i gestori onClick generati da una correzione rapida, come mostrato nella figura 2.
onClick
funziona solo se hai impostato tools:context.Puoi specificare il nome della classe di attività utilizzando lo stesso prefisso punto del file manifest (escluso il nome completo del pacchetto).
Ad esempio:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
tools:itemCount
Destinato a: <RecyclerView>
Utilizzato da: Editor layout di Android Studio
Per un determinato RecyclerView, questo attributo specifica il numero di elementi che il Layout Editor deve eseguire il rendering nella finestra Anteprima.
Ad esempio:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="3"/>
tools:layout
Destinato a: <fragment>
Utilizzato da: Layout Editor di Android Studio
Questo attributo dichiara il layout che vuoi che l'anteprima del layout disegni all'interno del fragment perché l'anteprima del layout non può eseguire il codice dell'attività che normalmente applica il layout.
Ad esempio:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader e tools:listfooter
Destinato a: <AdapterView> (e sottoclassi come <ListView>)
Utilizzato da: Layout Editor di Android Studio
Questi attributi specificano quale layout mostrare nell'anteprima del layout per gli elementi, l'intestazione e il piè di pagina di un elenco. Tutti i campi di dati nel layout sono compilati con contenuti numerici, ad esempio "Articolo 1", in modo che gli elementi dell'elenco non siano ripetitivi.
Ad esempio:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/sample_list_item"
tools:listheader="@layout/sample_list_header"
tools:listfooter="@layout/sample_list_footer" />
tools:showIn
Destinato a: qualsiasi <View> principale in un layout a cui fa riferimento un
<include>
Utilizzato da: Layout Editor di Android Studio
Questo attributo ti consente di puntare a un layout che utilizza questo layout utilizzando
<include>, in modo da poter
visualizzare l'anteprima e modificare questo file così come appare quando è incorporato nel layout principale.
Ad esempio:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:showIn="@layout/activity_main" />
Ora l'anteprima del layout mostra questo layout TextView così come appare all'interno del layout activity_main.
tools:menu
Destinato a: qualsiasi radice <View>
Utilizzato da: Layout Editor di Android Studio
Questo attributo specifica il menu visualizzato nell'anteprima del layout nella
barra delle app. Il valore è uno o più ID menu,
separati da virgole, senza @menu/ o prefissi di questo tipo e senza
l'estensione .xml.
Ad esempio:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:menu="menu1,menu2" />
tools:minValue, tools:maxValue
Destinato a: <NumberPicker>
Utilizzato da: Layout Editor di Android Studio
Questi attributi impostano i valori minimo e massimo per una visualizzazione NumberPicker.
Ad esempio:
<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/numberPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:minValue="0"
tools:maxValue="10" />
tools:openDrawer
Destinato a: <DrawerLayout>
Utilizzato da: Layout Editor di Android Studio
Questo attributo consente di aprire un DrawerLayout nell'anteprima.
Puoi anche modificare il modo in cui il Layout Editor esegue il rendering del layout passando uno dei seguenti valori:
Tabella 1. Valori per modificare il modo in cui
l'editor del layout esegue il rendering di un DrawerLayout
| Costante | Valore | Descrizione |
|---|---|---|
end | 800005 | Sposta l'oggetto alla fine del contenitore, senza modificarne le dimensioni. |
left | 3 | Sposta l'oggetto a sinistra del contenitore, senza modificarne le dimensioni. |
right | 5 | Sposta l'oggetto a destra del contenitore, senza modificarne le dimensioni. |
start | 800003 | Sposta l'oggetto all'inizio del contenitore, senza modificarne le dimensioni. |
Ad esempio:
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start" />
"@tools:sample/*" risorse
Destinato a:qualsiasi visualizzazione che supporti testo o immagini dell'interfaccia utente
Utilizzato da: Editor layout di Android Studio
Questo attributo consente di inserire dati o immagini segnaposto nella visualizzazione. Ad esempio, per testare il comportamento del layout con il testo prima di finalizzare il testo dell'interfaccia utente per l'app, puoi utilizzare il testo segnaposto come segue:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem" />
La tabella seguente descrive i tipi di dati segnaposto che puoi inserire nei layout:
Tabella 2. Dati segnaposto per i layout
| Valore attributo | Descrizione dei dati segnaposto |
|---|---|
@tools:sample/full_names |
Nomi completi generati in modo casuale dalla combinazione di
@tools:sample/first_names e
@tools:sample/last_names |
@tools:sample/first_names |
Nomi comuni |
@tools:sample/last_names |
Cognomi comuni |
@tools:sample/cities |
Nomi di città di tutto il mondo |
@tools:sample/us_zipcodes |
Codici postali statunitensi generati in modo casuale |
@tools:sample/us_phones |
Numeri di telefono generati in modo casuale con il seguente formato:
(800) 555-xxxx |
@tools:sample/lorem |
Testo segnaposto in latino |
@tools:sample/date/day_of_week |
Date e ore casuali per il formato specificato |
@tools:sample/date/ddmmyy | |
@tools:sample/date/mmddyy | |
@tools:sample/date/hhmm | |
@tools:sample/date/hhmmss | |
@tools:sample/avatars |
Risorse grafiche vettoriali che puoi utilizzare come avatar del profilo |
@tools:sample/backgrounds/scenic |
Immagini che puoi utilizzare come sfondi |