Concetti e implementazione di Jetpack Compose
Android Studio supporta una serie di attributi XML nello spazio dei nomi tools che consentono di utilizzare 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 build 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 root 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 allo stesso modo dell'annotazione @TargetApi nel codice Java. Consente di specificare il livello API (come numero intero o nome in codice)
che supporta questo elemento.
In questo modo, gli strumenti sanno che ritieni che questo elemento e gli eventuali elementi secondari vengano utilizzati solo sul livello API specificato o su un livello superiore. In questo modo, lint non ti avvisa se l'elemento o i suoi attributi non sono disponibili nel livello API specificato come minSdkVersion.
Ad esempio, potresti utilizzare questo attributo perché GridLayout è disponibile solo
a partire dal livello API 14, ma sai che questo layout non viene utilizzato nel
tuo codice per 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 della 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:
Destinatari: <View>
Utilizzato da: editor di layout di Android Studio
Puoi inserire dati campionati nell'anteprima del layout utilizzando il prefisso tools: anziché android: con qualsiasi attributo <View> del framework Android.
Questo è 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 dello spazio dei nomi android:, utilizzato in fase di runtime, sia l'attributo tools: corrispondente, che esegue l'override dell'attributo di runtime solo nell'anteprima del layout.
Puoi anche utilizzare un attributo tools: per annullare un'impostazione di attributo solo per l'anteprima del layout. Ad esempio, se hai un FrameLayout con due elementi secondari,
ma vuoi visualizzarne solo uno nell'anteprima del layout, puoi impostare uno
degli elementi secondari in modo che sia invisibile nell'anteprima del layout, come mostrato di seguito:
<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 design-time è indicato con un'icona a forma di chiave inglese
accanto al nome dell'attributo per distinguerlo dall'attributo reale con lo stesso nome.
tools:context
Destinato a: qualsiasi root <View>
Utilizzato da: Lint, editor di layout di Android Studio
Questo attributo dichiara l'attività a cui questo layout è associato per impostazione predefinita. In questo modo vengono attivate nell'editor o nell'anteprima del layout le funzionalità 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 dell'attività utilizzando lo stesso prefisso con 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
Destinatari: <RecyclerView>
Utilizzato da: Editor di layout di Android Studio
Per un determinato RecyclerView, questo attributo specifica il numero di elementi che l'editor di layout deve visualizzare 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
Destinatari: <fragment>
Utilizzato da: Layout Editor di Android Studio
Questo attributo dichiara quale layout vuoi che l'anteprima del layout disegni all'interno del frammento, 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 vengono compilati con contenuti numerici, ad esempio "Elemento 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 elemento principale <View> in un layout a cui fa riferimento un elemento <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 root <View>
Utilizzato da: Layout Editor di Android Studio
Questo attributo specifica quale menu mostra l'anteprima del layout nella
barra delle app. Il valore è uno o più ID menu, separati da virgole, senza @menu/ o qualsiasi prefisso ID simile 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
Destinatari: <NumberPicker>
Utilizzato da: editor di layout 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
Destinatari: <DrawerLayout>
Utilizzato da: editor di layout di Android Studio
Questo attributo ti consente di aprire un DrawerLayout nell'anteprima.
Puoi anche modificare il modo in cui l'editor di layout esegue il rendering del layout passando uno dei seguenti valori:
Tabella 1. Valori per modificare il modo in cui l'editor di layout esegue il rendering di un DrawerLayout
| Costante | Valore | Descrizione |
|---|---|---|
end | 800005 | Spinge l'oggetto alla fine del suo contenitore, senza modificarne le dimensioni. |
left | 3 | Spinge l'oggetto a sinistra del relativo contenitore, senza modificarne le dimensioni. |
right | 5 | Spinge l'oggetto a destra del relativo contenitore, senza modificarne le dimensioni. |
start | 800003 | Spingi l'oggetto all'inizio del relativo 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 di layout di Android Studio
Questo attributo ti consente di inserire dati o immagini segnaposto nella visualizzazione. Ad esempio, per testare il comportamento del layout con il testo prima di aver finalizzato il testo dell'interfaccia utente per la tua 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 randomizzate per il formato specificato |
@tools:sample/date/ddmmyy | |
@tools:sample/date/mmddyy | |
@tools:sample/date/hhmm | |
@tools:sample/date/hhmmss | |
@tools:sample/avatars |
Drawable vettoriali che puoi utilizzare come avatar del profilo |
@tools:sample/backgrounds/scenic |
Immagini che puoi utilizzare come sfondi |