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.
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 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.
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:
Costante | Valore | Descrizione |
---|---|---|
end | 800005 | Esegui il push dell'oggetto alla fine del container senza modificarne le dimensioni. |
left | 3 | Esegui il push dell'oggetto a sinistra del contenitore, senza modificarne le dimensioni. |
right | 5 | Esegui il push dell'oggetto a destra del contenitore, senza modificarne le dimensioni. |
start | 800003 | Esegui 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:
Valore attributo | Descrizione 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.