Riferimento per gli attributi degli strumenti

Android Studio supporta una varietà di attributi XML nello spazio dei nomi tools che consentono funzionalità in fase di progettazione, ad esempio quale layout mostrare in un frammento o comportamenti in fase di compilazione, come la modalità di riduzione da applicare alle risorse XML. Quando crei la tua app, gli strumenti di creazione 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 qui:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

Attributi per la gestione degli errori

I seguenti attributi consentono di eliminare i messaggi di avviso lint:

tools:ignore

Destinato a: qualsiasi elemento

Usato da: Lint

Questo attributo accetta un elenco separato da virgole di ID problemi di lint che gli strumenti devono ignorare per questo elemento o i suoi discendenti.

Ad esempio, puoi indicare agli strumenti di ignorare l'errore MissingTranslation:

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

Per: qualsiasi elemento

Usato 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.

In questo modo indichi agli strumenti che, secondo te, questo elemento e gli eventuali elementi secondari vengono utilizzati solo al livello API specificato o superiore. In questo modo, impedisci a lint di avvisarti se l'elemento o i suoi attributi non sono disponibili al livello API specificato come minSdkVersion.

Ad esempio, potresti utilizzare questo attributo perché GridLayout è disponibile solo al livello API 14 e livelli successivi, ma sai che questo layout non viene utilizzato nel 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, ti consigliamo di utilizzare GridLayout dalla libreria di assistenza.

tools:locale

Destinatari: <resources>

Utilizzato da: Lint, editor di Android Studio

Questo indica agli strumenti la lingua o le impostazioni internazionali predefinite per le risorse nell'elemento <resources> specificato per evitare avvisi del controllo ortografico. In caso contrario, lo strumento presuppone che la lingua sia l'inglese.

Il valore deve essere un qualificatore locale valido.

Ad esempio, puoi aggiungere questo al tuo file values/strings.xml predefinito per indicare che la lingua utilizzata per le stringhe predefinite è lo spagnolo anziché l'inglese:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

Attributi della visualizzazione in fase di progettazione

I seguenti attributi definiscono le caratteristiche del layout che sono visibili solo nell'anteprima del layout di Android Studio.

tools: invece di android:

Destinatari: <View>

Utilizzato da: editor di 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. Questo è utile quando il valore dell'attributo non viene compilato prima del tempo di esecuzione e vuoi vedere l'effetto nell'anteprima del layout.

Ad esempio, se il valore dell'attributo android:text è impostato in fase di esecuzione o se vuoi visualizzare il layout con un valore diverso da quello predefinito, puoi aggiungere tools:text per specificare del testo solo per l'anteprima del layout.

L&#39;attributo Tools:text imposta Google Voice come valore per l&#39;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 sostituisce l'attributo di runtime solo nell'anteprima del layout.

Puoi utilizzare un attributo tools: anche per annullare l'impostazione di un attributo solo per l'anteprima del layout. Ad esempio, se hai un elemento FrameLayout con due elementi secondari, 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 Vista struttura, la finestra Proprietà consente di modificare alcuni attributi delle viste design-time. Ogni attributo in fase di progettazione è indicato da un'icona a forma di chiave inglese L&#39;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 valore radice <View>

Utilizzato da: Lint, Editor layout Android Studio

Questo attributo dichiara a quale attività è associato questo layout per impostazione predefinita. In questo modo vengono attivate le funzionalità nell'editor o nell'anteprima del layout che richiedono la conoscenza dell'attività, ad esempio qual è il tema di layout nell'anteprima e dove inserire i gestori onClick generati da una correzione rapida, come mostrato nella figura 2.

La correzione rapida per l&#39;attributo YAML funziona solo se hai impostato strumenti:context
Figura 2. La correzione rapida per l'attributo onClick funziona solo se hai impostato tools:context.

Puoi specificare il nome della classe di attività utilizzando lo stesso prefisso del punto del file manifest (escluso il nome completo del pacchetto).

Ecco alcuni esempi:

<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 layout Android Studio

Per un valore RecyclerView specifico, questo attributo specifica il numero di elementi che l'Editor del layout deve visualizzare nella finestra Anteprima.

Ecco alcuni esempi:

<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: editor di layout di Android Studio

Questo attributo dichiara quale layout vuoi che l'anteprima del layout venga disegnata all'interno del frammento perché quest'ultima non può eseguire il codice attività che normalmente applica il layout.

Ecco alcuni esempi:

<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: editor di layout 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 riempiti con contenuti numerici, ad esempio "Elemento 1", in modo che le voci dell'elenco non siano ripetitive.

Ecco alcuni esempi:

<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 radice <View> in un layout a cui fa riferimento un <include>

Utilizzato da: editor di layout 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 il file così come appare mentre è incorporato nel relativo layout principale.

Ecco alcuni esempi:

<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 come appare all'interno del layout activity_main.

tools:menu

Destinato a: qualsiasi valore radice <View>

Utilizzato da: editor di layout di Android Studio

Questo attributo specifica il menu visualizzato dall'anteprima del layout nella barra dell'app. Il valore corrisponde a uno o più ID menu, separati da virgole, senza @menu/ o altri prefissi ID e senza l'estensione .xml.

Ecco alcuni esempi:

<?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 vista NumberPicker.

Ecco alcuni esempi:

<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 del layout esegue il rendering del layout trasmettendo uno dei seguenti valori:

Tabella 1. Valori per modificare il modo in cui l'Editor di layout esegue il rendering di un file DrawerLayout

CostanteValoreDescrizione
end800005Esegui il push dell'oggetto alla fine del container senza modificarne le dimensioni.
left3Esegui il push dell'oggetto a sinistra del contenitore, senza modificarne le dimensioni.
right5Esegui il push dell'oggetto a destra del contenitore, senza modificarne le dimensioni.
start800003Esegui il push dell'oggetto all'inizio del container, senza modificarne le dimensioni.

Ecco alcuni esempi:

<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/*" risorsa

Destinato a: qualsiasi visualizzazione che supporti il testo o le immagini dell'interfaccia utente

Utilizzato da: Editor layout Android Studio

Questo attributo consente di inserire dati o immagini segnaposto nella visualizzazione. Ad esempio, per verificare 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 indicato di seguito:

<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 seguente tabella descrive i tipi di dati dei segnaposto che puoi inserire nei layout:

Tabella 2. Dati segnaposto per i layout

Valore attributoDescrizione dei dati dei 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 Cognome comuni
@tools:sample/cities Nomi di città di tutto il mondo
@tools:sample/us_zipcodes Codici postali degli Stati Uniti generati casualmente
@tools:sample/us_phones Numeri di telefono generati casualmente nel 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 Disegni vettoriali che puoi utilizzare come avatar del profilo
@tools:sample/backgrounds/scenic Immagini utilizzabili come sfondi

Attributi di riduzione delle risorse

I seguenti attributi consentono di abilitare controlli del riferimento rigorosi e dichiarare se mantenere o eliminare determinate risorse durante l'utilizzo della riduzione delle risorse.

Per attivare la riduzione delle risorse, imposta la proprietà shrinkResources su true nel file build.gradle, insieme a minifyEnabled per la riduzione del codice.

Ecco alcuni esempi:

Trendy

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

Kotlin

android {
    ...
    buildTypes {
        getByName("release") {
            isShrinkResources = true
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

tools:shrinkMode

Destinatari: <resources>

Utilizzato da: crea strumenti con la riduzione delle risorse

Questo attributo consente di specificare se gli strumenti di creazione devono utilizzare quanto segue:

  • Modalità provvisoria: conserva tutte le risorse esplicitamente citate e a cui potrebbe fare riferimento in modo dinamico con una chiamata a Resources.getIdentifier().
  • Modalità rigorosa: conserva solo le risorse citate esplicitamente nel codice o in altre risorse.

Per impostazione predefinita, viene utilizzata la modalità provvisoria (shrinkMode="safe"). Se invece preferisci usare la modalità stretta, aggiungi shrinkMode="strict" al tag <resources> come mostrato qui:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

Quando attivi la modalità restrittiva, potresti dover utilizzare tools:keep per conservare le risorse che sono state rimosse, ma che vuoi effettivamente, e utilizzare tools:discard per rimuovere esplicitamente altre risorse.

Per ulteriori informazioni, consulta la pagina Ridurre le risorse.

tools:keep

Destinatari: <resources>

Utilizzato da: crea strumenti con la riduzione delle risorse

Quando utilizzi la riduzione delle risorse per rimuovere risorse inutilizzate, questo attributo consente di specificare le risorse da conservare, in genere perché viene fatto riferimento in modo indiretto in fase di runtime, ad esempio passando un nome di risorsa generato dinamicamente a Resources.getIdentifier().

Per utilizzarlo, crea un file XML nella directory delle risorse (ad esempio res/raw/keep.xml) con un tag <resources> e specifica ogni risorsa da mantenere nell'attributo tools:keep come elenco separato da virgole. L'asterisco può essere utilizzato come carattere jolly.

Ecco alcuni esempi:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />

Per ulteriori informazioni, consulta la pagina Ridurre le risorse.

tools:discard

Destinatari: <resources>

Utilizzato da: crea strumenti con la riduzione delle risorse

Quando utilizzi la riduzione delle risorse per rimuovere risorse inutilizzate, questo attributo consente di specificare le risorse che vuoi eliminare manualmente, in genere perché viene fatto riferimento alla risorsa, ma in un modo che non influisce sulla tua app o perché il plug-in Gradle ha erroneamente dedotto che la risorsa viene utilizzata come riferimento.

Per utilizzarlo, crea un file XML nella directory delle risorse (ad esempio res/raw/keep.xml) con un tag <resources> e specifica ogni risorsa da eliminare nell'attributo tools:discard come elenco separato da virgole. L'asterisco può essere utilizzato come carattere jolly.

Ecco alcuni esempi:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

Per ulteriori informazioni, consulta la pagina Ridurre le risorse.