Riferimento agli attributi degli strumenti (visualizzazioni)

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.

L'attributo tools:text imposta Google Voice come valore per l'anteprima del layout
Figura 1. L'attributo 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 Icona
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.

La correzione rapida per l'attributo onClick funziona solo se hai impostato tools:context
Figura 2. La correzione rapida per l'attributo 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

CostanteValoreDescrizione
end800005Spinge l'oggetto alla fine del suo contenitore, senza modificarne le dimensioni.
left3Spinge l'oggetto a sinistra del relativo contenitore, senza modificarne le dimensioni.
right5Spinge l'oggetto a destra del relativo contenitore, senza modificarne le dimensioni.
start800003Spingi 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 attributoDescrizione 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