<attività>

:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    ...
</activity>
contenuto in:
<application>
può contenere:
<intent-filter>
<meta-data>
<layout>
description:
Dichiara un'attività (una sottoclasse Activity) che implementa parte dell'interfaccia utente visiva dell'applicazione. Tutte le attività devono essere rappresentate da elementi <activity> nel file manifest. Quelle non dichiarate non vengono rilevate dal sistema e non vengono mai eseguite.
:
android:allowEmbedded
Indica che l'attività può essere avviata come elemento secondario incorporato di un'altra attività, in particolare nel caso in cui l'attività secondaria si trovi in un contenitore, ad esempio un elemento Display di proprietà di un'altra attività. Ad esempio, le attività utilizzate per le notifiche personalizzate di Wear lo dichiarano in modo che Wear possa mostrare l'attività nel suo stream di contesto, che risiede in un altro processo.

Il valore predefinito di questo attributo è false.

android:allowTaskReparenting
Indica se l'attività può essere spostata dall'attività che l'ha avviata all'attività per la quale ha un'affinità quando verrà portata in primo piano. È "true" se può essere spostata e "false" se rimane con l'attività in cui è iniziata.

Se questo attributo non è impostato, all'attività viene applicato il valore impostato dall'attributo allowTaskReparenting corrispondente dell'elemento <application>. Il valore predefinito è "false".

Normalmente, quando viene avviata, un'attività viene associata all'attività dell'attività che l'ha avviata e vi rimane per tutta la sua durata. Puoi utilizzare questo attributo per forzarne la creazione come padre per l'attività per cui ha un'affinità quando l'attività corrente non viene più visualizzata. In genere viene utilizzato per spostare le attività di un'applicazione nell'attività principale associata all'applicazione.

Ad esempio, se un messaggio email contiene un link a una pagina web, facendo clic sul link viene visualizzata un'attività che può visualizzare la pagina. Questa attività è definita dall'applicazione browser, ma viene avviata come parte dell'attività email. Se è stato assegnato di nuovo all'attività del browser, viene mostrato quando il browser torna in primo piano e diventa assente quando l'attività email viene nuovamente visualizzata.

L'affinità di un'attività è definita dall'attributo taskAffinity. L'affinità di un'attività viene determinata leggendo l'affinità della sua attività principale. Pertanto, per definizione, un'attività principale è sempre in un'attività con la stessa affinità. Poiché le attività con le modalità di avvio "singleTask" o "singleInstance" possono trovarsi solo a livello di radice di un'attività, la creazione di un nuovo elemento padre è limitata alle modalità "standard" e "singleTop". Vedi anche l'attributo launchMode.

android:alwaysRetainTaskState
Se lo stato dell'attività in cui si trova l'attività viene sempre mantenuto dal sistema. "true" se lo è e "false" se il sistema può reimpostare l'attività allo stato iniziale in determinate situazioni. Il valore predefinito è "false". Questo attributo è significativo solo per l'attività principale di un'attività. Viene ignorato per tutte le altre attività.

Normalmente, il sistema cancella un'attività, rimuovendo tutte le attività dallo stack sopra l'attività principale, in determinate situazioni in cui l'utente riseleziona l'attività dalla schermata Home. In genere, questa operazione viene eseguita se l'utente non ha visitato l'attività per un determinato periodo di tempo, ad esempio 30 minuti.

Tuttavia, quando questo attributo è "true", gli utenti tornano sempre all'attività nell'ultimo stato, indipendentemente da come ci arrivano. Questo è utile in un'applicazione come un browser web in cui sono presenti molti stati, ad esempio più schede aperte, che gli utenti non vogliono perdere.

android:autoRemoveFromRecents
Indica se le attività avviate dall'attività con questo attributo rimangono nella schermata Recenti fino al completamento dell'ultima attività nell'attività. Se true, l'attività viene rimossa automaticamente dalla schermata Recenti. Questa operazione sostituisce l'uso di FLAG_ACTIVITY_RETAIN_IN_RECENTS da parte del chiamante. Deve essere un valore booleano, ovvero "true" o "false".
android:banner
Una risorsa disegnabile che fornisce un banner grafico esteso per l'elemento associato. Utilizzalo con il tag <activity> per fornire un banner predefinito per un'attività specifica o con il tag <application> per fornire un banner per tutte le attività dell'applicazione.

Il sistema utilizza il banner per rappresentare un'app nella schermata Home di Android TV. Poiché il banner viene visualizzato solo nella schermata Home, viene specificato solo dalle applicazioni con un'attività che gestisce l'intent CATEGORY_LEANBACK_LAUNCHER.

Questo attributo è impostato come riferimento a una risorsa disegnabile contenente l'immagine, come "@drawable/banner". Non esiste un banner predefinito.

Per ulteriori informazioni, consulta la sezione Fornire un banner nella schermata Home nella sezione Guida introduttiva alle app per la TV.

android:clearTaskOnLaunch
Indica se tutte le attività vengono rimosse dall'attività, ad eccezione dell'attività principale, al riavvio dalla schermata Home. "true" se l'attività è sempre ridotta all'attività principale e "false" in caso contrario. Il valore predefinito è "false". Questo attributo è significativo solo per le attività che iniziano una nuova attività, l'attività principale. Viene ignorato per tutte le altre attività dell'attività.

Quando il valore è "true", ogni volta che gli utenti avviano l'attività, vengono ripristinati l'attività principale indipendentemente dall'ultima volta che hanno eseguito l'attività e a prescindere dal fatto che abbiano utilizzato il pulsante Indietro o il pulsante Home per abbandonarla. Quando il valore è "false", l'attività può essere cancellata dalle attività in alcune situazioni, ma non sempre. Per ulteriori informazioni, consulta l'attributo alwaysRetainTaskState.

Supponiamo che l'utente avvii l'attività P dalla schermata Home e da lì passi all'attività Q. L'utente tocca poi Home e poi torna all'attività P. Normalmente, l'utente vede l'attività Q, poiché è l'ultima attività che ha svolto nell'attività di P. Tuttavia, se il flag viene impostato su "true", tutte le attività successive, in questo caso Q, vengono rimosse quando l'utente avvia l'attività P dalla schermata Home. In questo modo, l'utente vede solo P quando torna all'attività.

Se questo attributo e allowTaskReparenting sono entrambi "true", tutte le attività di cui è possibile assegnare nuovamente l'elemento padre vengono spostate nell'attività con cui condividono un'affinità. Le attività rimanenti vengono eliminate.

Questo attributo viene ignorato se FLAG_ACTIVITY_RESET_TASK_IF_NEEDED non è impostato.

android:colorMode

Specifica la modalità colore dell'attività. Se specificato, può essere hdr o wideColorGamut.

Se hdr, richiede la visualizzazione dell'attività in un intervallo dinamico elevato, se il dispositivo la supporta.

Se wideColorGamut, richiede la visualizzazione dell'attività in modalità con gamma di colori ampia sui dispositivi compatibili. Nella modalità con gamma di colori ampia, è possibile visualizzare una finestra al di fuori della gamma di colori SRGB per visualizzare colori più vivaci. Se il dispositivo non supporta il rendering con gamma cromatica estesa, questo attributo non ha alcun effetto. Per ulteriori informazioni sul rendering in modalità colore largo, consulta la pagina Migliorare la grafica con contenuti a colori ampi.

android:configChanges
Elenca le modifiche alla configurazione che l'attività gestisce autonomamente. Quando una modifica alla configurazione si verifica in fase di runtime, l'attività viene arrestata e riavviata per impostazione predefinita, ma la dichiarazione di una configurazione con questo attributo impedisce il riavvio dell'attività. L'attività rimane invece in esecuzione e viene richiamato il metodo onConfigurationChanged().

Nota: utilizza questo attributo solo in casi speciali per migliorare le prestazioni e la reattività dell'applicazione. Per saperne di più, vedi Gestire le modifiche alla configurazione.

Le seguenti stringhe sono valori validi per questo attributo. Più valori sono separati da |, ad esempio "locale|navigation|orientation".

Valore Descrizione
"density" Una modifica della densità del display, ad esempio quando l'utente specifica una scala di visualizzazione diversa o quando è attivo un display diverso.

Aggiunta nel livello API 24.

"fontScale" Una modifica al fattore di ridimensionamento del carattere, ad esempio quando l'utente seleziona una nuova dimensione globale del carattere.
"keyboard" Una modifica al tipo di tastiera, ad esempio quando l'utente collega una tastiera esterna.
"keyboardHidden" Una modifica all'accessibilità della tastiera, ad esempio quando l'utente rivela la tastiera hardware.
"layoutDirection" Una modifica alla direzione del layout, ad esempio da sinistra a destra (LTR) a destra a sinistra (RTL).

Aggiunta nel livello API 17.

"locale" Una modifica alle impostazioni internazionali, ad esempio quando l'utente seleziona una nuova lingua in cui viene visualizzato il testo.
"mcc" Una modifica al codice paese IMSI (Centro clienti) quando viene rilevata una SIM che aggiorna il Centro clienti.
"mnc" Modifica al codice MNC (Mobile Network Code) IMSI quando viene rilevata una SIM che aggiorna l'MNC.
"navigation" Passaggio del TA al tipo di navigazione (trackball o D-pad). In genere questo non accade.
"orientation"

Un cambiamento dell'orientamento dello schermo, ad esempio quando l'utente ruota il dispositivo.

Nota: se la tua applicazione ha come target Android 3.2 (livello API 13) o versioni successive, dichiara anche le configurazioni "screenLayout" e "screenSize", perché il layout e le dimensioni dello schermo possono cambiare quando un dispositivo passa dall'orientamento verticale a quello orizzontale e viceversa.

"screenLayout" Una modifica al layout dello schermo, ad esempio quando diventa attivo un altro display.
"screenSize" Una modifica alle dimensioni schermo attualmente disponibili.

Questo rappresenta una modifica delle dimensioni attualmente disponibili, in relazione alle proporzioni attuali, quindi cambia quando l'utente passa dalla modalità orizzontale a quella verticale e viceversa.

Aggiunta nel livello API 13.

"smallestScreenSize" Una modifica alle dimensioni dello schermo fisico.

Ciò rappresenta una variazione di dimensioni indipendentemente dall'orientamento, quindi cambia solo quando cambiano le effettive dimensioni dello schermo fisico, ad esempio quando si passa a un display esterno. Una modifica a questa configurazione corrisponde a una modifica nella configurazione di smallestWidth.

Aggiunta nel livello API 13.

"touchscreen" Un passaggio al touchscreen. In genere questo non accade.
"uiMode" Una modifica alla modalità dell'interfaccia utente, ad esempio quando l'utente posiziona il dispositivo su una scrivania o sul dock per auto oppure quando cambia la modalità notturna. Per saperne di più sulle diverse modalità dell'interfaccia utente, consulta UiModeManager.

Aggiunta nel livello API 8.

Tutte queste modifiche alla configurazione possono influire sui valori delle risorse visualizzati dall'applicazione. Pertanto, quando viene chiamato onConfigurationChanged(), di solito è necessario recuperare di nuovo tutte le risorse, inclusi i layout di visualizzazione e i disegnabili, per gestire correttamente la modifica.

Nota: per gestire le modifiche alla configurazione relative a più finestre, usa sia "screenLayout" che "smallestScreenSize". La funzionalità multi-finestra è supportata in Android 7.0 (livello API 24) o versioni successive.

android:directBootAware

Indica se l'attività è consapevole all'avvio diretto, ovvero se può essere eseguita prima che l'utente sblocchi il dispositivo.

Nota: durante l'avvio diretto, un'attività nella tua applicazione può accedere soltanto ai dati archiviati nello spazio di archiviazione protetto dal dispositivo.

Il valore predefinito è "false".

android:documentLaunchMode
Specifica in che modo una nuova istanza di un'attività viene aggiunta a un'attività ogni volta che viene avviata. Questo attributo consente all'utente di visualizzare più documenti della stessa applicazione nella schermata Recenti.

Questo attributo ha quattro valori, che producono i seguenti effetti quando l'utente apre un documento con l'applicazione:

Valore Descrizione
"intoExisting" Il sistema cerca un'attività il cui ComponentName e l'URI dei dati dell'intent di base corrispondono a quelli dell'intent di avvio. Se il sistema trova tale attività, la cancella e si riavvia, con l'attività principale che riceve una chiamata a onNewIntent(android.content.Intent). Se il sistema non trova un'attività di questo tipo, ne crea una nuova.
"always" L'attività crea una nuova attività per il documento, anche se il documento è già aperto. Equivale a impostare entrambi i flag FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK.
"none" L'attività non crea una nuova attività per l'attività. Questo è il valore predefinito, che crea una nuova attività solo quando è impostato FLAG_ACTIVITY_NEW_TASK. La schermata Recenti tratta l'attività come per impostazione predefinita: visualizza una singola attività per l'app, che riprende dall'ultima attività richiamata dall'utente.
"never" L'attività non viene avviata in un nuovo documento anche se l'intent contiene FLAG_ACTIVITY_NEW_DOCUMENT. Questa impostazione sostituisce il comportamento dei flag FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK, se uno di questi viene impostato nell'attività e la schermata Recenti mostra una singola attività per l'app, che riprende dall'ultima attività richiamata dall'utente.

Nota: per valori diversi da "none" e "never", l'attività è definita con launchMode="standard". Se questo attributo non è specificato, viene utilizzato documentLaunchMode="none".

android:enabled
Indica se il sistema può creare un'istanza dell'attività. È "true" se può esserlo e "false" in caso contrario. Il valore predefinito è "true".

L'elemento <application> ha il proprio attributo enabled che si applica a tutti i componenti dell'applicazione, incluse le attività. Per consentire al sistema di creare un'istanza dell'attività, gli attributi <application> e <activity> devono essere entrambi "true", perché sono entrambi per impostazione predefinita. Se uno dei due è "false", non è possibile creare un'istanza.

android:excludeFromRecents
Indica se l'attività avviata da questa attività viene esclusa dalla schermata Recenti. In altre parole, quando questa attività è l'attività principale di una nuova attività, questo attributo determina se l'attività viene visualizzata nell'elenco delle app recenti. È "true" se l'attività è esclusa dall'elenco; "false" se è inclusa. Il valore predefinito è "false".

android:exported
Se l'attività può essere avviata da componenti di altre applicazioni:

  • Se "true", l'attività è accessibile a qualsiasi app e può essere avviata tramite il nome esatto della classe.
  • Se "false", l'attività può essere avviata solo dai componenti della stessa applicazione, da applicazioni con lo stesso ID utente o da componenti di sistema con privilegi. Questo è il valore predefinito quando non sono presenti filtri per intent.

Se un'attività nella tua app include filtri per intent, imposta questo elemento su "true" per consentire ad altre app di avviarlo. Ad esempio, se l'attività è quella principale dell'app e include category android.intent.category.LAUNCHER.

Se questo elemento è impostato su "false" e un'app tenta di avviare l'attività, il sistema genera un ActivityNotFoundException.

Questo attributo non è l'unico modo per limitare l'esposizione di un'attività ad altre applicazioni. Le autorizzazioni sono utilizzate anche per limitare le entità esterne che possono richiamare l'attività. Vedi l'attributo permission.

android:finishOnTaskLaunch
Indica se un'istanza esistente dell'attività viene arrestata, ad eccezione dell'attività root, quando l'utente riavvia la propria attività scegliendo l'attività dalla schermata Home. È "true" se è chiusa e "false" in caso contrario. Il valore predefinito è "false".

Se questo attributo e allowTaskReparenting sono entrambi "true", questo attributo ha la precedenza sull'altro. L'affinità dell'attività viene ignorata. L'attività non è associata a un nuovo livello di padre, ma viene eliminata.

Questo attributo viene ignorato se FLAG_ACTIVITY_RESET_TASK_IF_NEEDED non è impostato.

android:hardwareAccelerated
Indica se il rendering con accelerazione hardware è abilitato per questa attività. "true" se è attivata e "false" in caso contrario. Il valore predefinito è "false".

Su Android 3.0 e versioni successive, per le applicazioni è disponibile un renderer OpenGL con accelerazione hardware per migliorare le prestazioni di molte operazioni comuni relative alla grafica 2D. Quando è abilitato il renderer con accelerazione hardware, la maggior parte delle operazioni in Canvas, Paint, Xfermode, ColorFilter, Shader e Camera vengono accelerate.

Ciò si traduce in animazioni più fluide, scorrimento più fluido e reattività complessiva migliorata, anche per applicazioni che non utilizzano esplicitamente le librerie OpenGL del framework. A causa delle maggiori risorse necessarie per abilitare l'accelerazione hardware, la tua app consuma più RAM.

Non tutte le operazioni OpenGL 2D sono accelerate. Se attivi il renderer con accelerazione hardware, verifica se la tua applicazione può utilizzare il renderer senza errori.

android:icon
Un'icona che rappresenta l'attività. L'icona viene mostrata agli utenti quando è richiesta una rappresentazione dell'attività sullo schermo. Ad esempio, le icone di attività che avviano attività vengono visualizzate nella finestra Avvio app. L'icona è spesso accompagnata da un'etichetta; per informazioni sull'etichetta, vedi l'attributo android:label.

Questo attributo è impostato come riferimento a una risorsa disegnabile contenente la definizione dell'immagine. Se non è impostato, viene utilizzata l'icona specificata per l'applicazione nel suo insieme. Per ulteriori informazioni, consulta l'attributo icon dell'elemento <application>.

L'icona dell'attività, impostata qui o dall'elemento <application>, è anche l'icona predefinita per tutti i filtri per intent dell'attività. Per ulteriori informazioni, consulta l'attributo icon dell'elemento <intent-filter>.

android:immersive
Imposta l'impostazione della modalità immersiva per l'attività corrente. Se è "true", per il membro ActivityInfo.flags è sempre impostato il suo FLAG_IMMERSIVE bit, anche se la modalità immersiva cambia in fase di runtime utilizzando il metodo setImmersive().
android:label
Un'etichetta leggibile per l'attività. L'etichetta viene visualizzata sullo schermo quando l'attività viene rappresentata all'utente. Viene spesso visualizzata insieme all'icona dell'attività. Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo insieme. Consulta l'attributo label dell'elemento <application>.

L'etichetta dell'attività, impostata qui o dall'elemento <application>, è anche l'etichetta predefinita per tutti i filtri per intent dell'attività. Per ulteriori informazioni, consulta l'attributo label dell'elemento <intent-filter>.

L'etichetta è impostata come riferimento a una risorsa stringa in modo che possa essere localizzata come altre stringhe nell'interfaccia utente. Tuttavia, per praticità, durante lo sviluppo dell'applicazione, puoi anche impostare una stringa non elaborata.

android:launchMode
Un'istruzione per l'avvio dell'attività. Esistono cinque modalità che funzionano in combinazione con i flag di attività (costanti FLAG_ACTIVITY_*) negli oggetti Intent per determinare cosa succede quando l'attività viene chiamata per gestire un intent:

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

La modalità predefinita è "standard".

Come mostrato nella tabella seguente, le modalità si suddividono in due gruppi principali, con le attività "standard" e "singleTop" su un lato e le attività "singleTask", "singleInstance" e "singleInstancePerTask" dall'altro. È possibile creare più istanze di un'attività con la modalità di avvio "standard" o "singleTop".

Le istanze possono appartenere a qualsiasi attività e possono essere posizionate in qualsiasi punto dell'attività. In genere, vengono avviati nell'attività chiamata startActivity(), a meno che l'oggetto Intent non contenga un'istruzione FLAG_ACTIVITY_NEW_TASK, nel qual caso viene scelta un'attività diversa. Per ulteriori informazioni, consulta l'attributo taskAffinity.

Al contrario, le attività "singleTask", "singleInstance" e "singleInstancePerTask" hanno comportamenti diversi. "singleInstancePerTask" è sempre all'origine dell'attività. Inoltre, il dispositivo può archiviare una sola istanza dell'attività "singleInstance" alla volta, mentre l'attività "singleInstancePerTask può essere creata più volte in diverse attività se viene impostato il valore FLAG_ACTIVITY_MULTIPLE_TASK o FLAG_ACTIVITY_NEW_DOCUMENT.

Un'attività con la modalità di avvio "singleTask" combina i comportamenti di "singleInstance" e "singleInstancePerTask": l'attività può essere creata più istanze e può trovarsi ovunque in un'attività della stessa taskAffinity. Tuttavia, il dispositivo può memorizzare una sola attività per individuare l'attività "singleTask" alla relativa radice.

Le modalità "standard" e "singleTop" sono diverse l'una dall'altra per un aspetto: ogni volta che c'è un nuovo intent per un'attività "standard", viene creata una nuova istanza della classe per rispondere a questo intento. Ogni istanza gestisce un singolo intent. Allo stesso modo, è possibile creare anche una nuova istanza di un'attività "singleTop" per gestire un nuovo intent.

Tuttavia, se l'attività di destinazione ha già un'istanza esistente nella parte superiore del proprio stack, l'istanza riceve il nuovo intent in una chiamata onNewIntent(). Non viene creata una nuova istanza. In caso contrario, se un'istanza esistente dell'attività "singleTop" si trova nell'attività di destinazione ma non all'inizio dello stack o se si trova all'inizio di uno stack, ma non nell'attività di destinazione, viene creata una nuova istanza e ne viene eseguito il push sullo stack.

Analogamente, se l'utente arriva a un'attività nello stack corrente, il comportamento è determinato dalla modalità di avvio dell'attività principale. Se l'attività principale ha la modalità di avvio singleTop (o l'intent up contiene FLAG_ACTIVITY_CLEAR_TOP), l'attività principale viene riportata in cima all'elenco e il suo stato viene mantenuto.

L'intent di navigazione viene ricevuto dal metodo onNewIntent() dell'attività principale. Se l'attività principale ha la modalità di avvio standard e l'intent up non contiene FLAG_ACTIVITY_CLEAR_TOP, l'attività corrente e la relativa attività principale vengono entrambe separate dall'elenco e viene creata una nuova istanza dell'attività principale per ricevere l'intent di navigazione.

La modalità "singleInstance" si differenzia anche da "singleTask" e "singleInstancePerTask" per un solo aspetto: un'attività con la modalità di avvio "singleTask" o "singleInstancePerTask" consente ad altre attività, necessariamente "standard" e "singleTop", di partecipare alla sua attività.

Un'attività "singleInstance", invece, non consente altre attività di far parte della sua attività. Deve essere l'unica attività nell'attività. Se avvia un'altra attività, questa viene assegnata a un'altra, come se l'intent FLAG_ACTIVITY_NEW_TASK fosse presente.

Casi d'uso Modalità di avvio Più istanze? Commenti
Lanci normali per la maggior parte delle attività "standard" Predefinita. Il sistema crea sempre una nuova istanza dell'attività nell'attività target e vi indirizza l'intent.
"singleTop" In modo condizionale Se un'istanza dell'attività esiste già nella parte superiore dell'attività target, il sistema instrada l'intent a tale istanza tramite una chiamata al proprio metodo onNewIntent(), anziché creare una nuova istanza dell'attività.
Lanci specializzati
(non consigliati per l'uso generale)
"singleTask" In modo condizionale Il sistema crea l'attività alla radice di una nuova attività oppure la individua in un'attività esistente con la stessa affinità. Se un'istanza dell'attività esiste già e si trova alla radice dell'attività, il sistema indirizza l'intent all'istanza esistente tramite una chiamata al proprio metodo onNewIntent(), anziché crearne uno nuovo.
"singleInstance" No Come "singleTask", con la differenza che il sistema non avvia alcuna altra attività nell'attività che contiene l'istanza. L'attività è sempre l'unico e unico membro della sua attività.
"singleInstancePerTask" In modo condizionale L'attività può essere eseguita solo come attività principale, ovvero la prima attività che l'ha creata, perciò in un'attività è presente una sola istanza di questa attività. Tuttavia, l'attività può essere creata più volte in diverse attività.

Come mostrato nella tabella precedente, "standard" è la modalità predefinita ed è appropriata per la maggior parte dei tipi di attività. "singleTop" è inoltre una modalità di avvio comune e utile per molti tipi di attività. Le altre modalità, "singleTask", "singleInstance" e "singleInstancePerTask", non sono appropriate per la maggior parte delle applicazioni. Dando origine a un modello di interazione probabilmente non familiare agli utenti e molto diverso dalla maggior parte delle altre applicazioni.

Indipendentemente dalla modalità di avvio selezionata, assicurati di testare l'usabilità dell'attività durante l'avvio e quando torni indietro da altre attività e attività utilizzando il pulsante Indietro.

Per ulteriori informazioni sulle modalità di avvio e sulla relativa interazione con i flag Intent, consulta Attività e back stack.

android:lockTaskMode
Indica in che modo il sistema presenta questa attività quando il dispositivo è in esecuzione in modalità di blocco attività.

Android può eseguire le attività in una modalità immersiva, simile a un kiosk, chiamata modalità di blocco attività. Quando il sistema viene eseguito in modalità di blocco attività, in genere gli utenti dei dispositivi non possono vedere le notifiche, accedere alle app non incluse nella lista consentita o tornare alla schermata Home, a meno che l'app Home non sia inclusa nella lista consentita.

Quando il sistema è in modalità di blocco attività, è possibile eseguire solo le app inserite nella lista consentita da un controller dei criteri dei dispositivi (DPC). Tuttavia, le app di sistema e le app con privilegi possono essere eseguite in modalità di blocco attività senza essere inserite nella lista consentita.

Il valore può essere uno qualsiasi dei seguenti valori stringa R.attr.lockTaskMode:

Valore Descrizione
"normal" Valore predefinito. Questo è il valore predefinito. Le attività non vengono avviate in modalità di blocco attività, ma possono essere inserite lì chiamando startLockTask().
"never"

Le attività non vengono avviate in modalità lockTask e l'utente del dispositivo non può fissarle dalla schermata Recenti.

Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app senza privilegi con questo valore vengono trattate come normal.

"if_whitelisted" Se il DPC autorizza questo pacchetto utilizzando DevicePolicyManager.setLockTaskPackages(), questa modalità è identica a always, tranne per il fatto che l'attività deve chiamare stopLockTask() prima di poter essere completata, se è l'ultima attività bloccata. Se il DPC non autorizza questo pacchetto, questa modalità è identica a normal.
"always"

Le attività rooted a questa attività vengono sempre avviate in modalità di blocco attività. Se il sistema è già in modalità di blocco attività quando viene avviata questa attività, la nuova attività viene avviata sopra quella corrente. Le attività avviate in questa modalità possono uscire dalla modalità di blocco attività chiamando finish().

Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app senza privilegi con questo valore vengono trattate come normal.

Questo attributo è stato introdotto nel livello API 23.

android:maxRecents
Il numero massimo di attività associate a questa attività nella schermata Recenti. Quando viene raggiunto questo numero di voci, il sistema rimuove l'istanza meno recente dalla schermata Recenti. I valori validi sono numeri interi da 1 a 50 o da 1 a 25 sui dispositivi con memoria ridotta. Zero non è valido. Il valore predefinito è 16.
android:maxAspectRatio

Le proporzioni massime supportate dall'attività. Se l'app viene eseguita su un dispositivo con proporzioni più ampie, il sistema applica automaticamente le letterbox in su, lasciando parti dello schermo inutilizzate in modo che l'app possa essere eseguita alle proporzioni massime specificate.

Le proporzioni massime sono espresse come forma decimale del quoziente della dimensione più lunga del dispositivo divisa per la dimensione più corta. Ad esempio, se le proporzioni massime sono 7:3, imposta il valore di questo attributo su 2,33.

Sui dispositivi non indossabili, il valore di questo attributo deve essere pari o superiore a 1,33. Sui dispositivi indossabili, il valore deve essere 1.0 o superiore. In caso contrario, il sistema ignora il valore impostato.

Nota: questo attributo viene ignorato se per l'attività è impostato resizeableActivity su true, poiché ciò significa che la tua attività supporta qualsiasi dimensione.

Per maggiori informazioni su questo attributo, consulta la pagina Dichiarare le proporzioni massime.

android:multiprocess
Indica se un'istanza dell'attività può essere avviata nel processo del componente che l'ha avviata. È "true" se può esserlo e "false" in caso contrario. Il valore predefinito è "false".

Normalmente, una nuova istanza di un'attività viene avviata nel processo dell'applicazione che l'ha definita, in modo che tutte le istanze dell'attività vengano eseguite nello stesso processo. Tuttavia, se il flag è impostato su "true", le istanze dell'attività possono essere eseguite in più processi, consentendo al sistema di creare istanze ovunque vengano utilizzate, purché le autorizzazioni lo consentano, cosa che non è quasi mai necessaria o desiderabile.

android:name
Il nome della classe che implementa l'attività, una sottoclasse di Activity. Il valore dell'attributo è solitamente un nome completo della classe, come "com.example.project.ExtracurricularActivity". Tuttavia, come forma abbreviata, se il primo carattere del nome è un punto, ad esempio ".ExtracurricularActivity", viene aggiunto allo spazio dei nomi specificato nel file build.gradle.

Una volta pubblicata l'applicazione, non modificare questo nome a meno che non imposti android:exported="false". Non esiste un'impostazione predefinita. È necessario specificare il nome.

android:noHistory
Indica se l'attività viene rimossa dallo stack delle attività e terminata, chiamando il relativo metodo finish(), quando l'utente esce dall'attività e non è più visibile sullo schermo. È "true" se è stata completata e "false" in caso contrario. Il valore predefinito è "false".

Il valore "true" indica che l'attività non lascia alcuna traccia storica. Non rimane nello stack delle attività per l'attività, quindi l'utente non è in grado di tornare. In questo caso, onActivityResult() non viene mai chiamato se avvii un'altra attività relativa a un risultato di questa attività.

Questo attributo è stato introdotto nel livello API 3.

android:parentActivityName
Il nome della classe dell'elemento padre logico dell'attività. Il nome qui deve corrispondere al nome della classe assegnato all'attributo android:name dell'elemento <activity> corrispondente.

Il sistema legge questo attributo per determinare quale attività avviare quando l'utente tocca il pulsante Su nella barra delle azioni. Il sistema può utilizzare queste informazioni anche per sintetizzare uno stack di attività con TaskStackBuilder.

Per supportare i livelli API 4-16, puoi anche dichiarare l'attività padre con un elemento <meta-data> che specifica un valore per "android.support.PARENT_ACTIVITY":

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

Per ulteriori informazioni sulla dichiarazione dell'attività padre per supportare la navigazione superiore, consulta Fornire la navigazione superiore.

Questo attributo è stato introdotto nel livello API 16.

android:persistableMode

Definisce in che modo un'istanza di un'attività viene conservata all'interno di un'attività contenitore nei riavvii dei dispositivi.

Se l'attività principale di un'attività imposta il valore di questo attributo su persistRootOnly, viene conservata solo l'attività principale. In caso contrario, vengono esaminate le attività che si trovano più in alto nello stack back dell'attività; tutte queste attività che impostano il valore di questo attributo su persistAcrossReboots vengono conservate.

Se utilizzi questo attributo, devi impostarne il valore su uno dei seguenti:

Valore Descrizione
persistRootOnly Valore predefinito. Al riavvio del sistema, l'attività dell'attività viene conservata, ma viene utilizzato solo l'intent di avvio dell'attività principale.

Quando l'intent di avvio dell'app carica l'attività principale dell'app, l'attività non riceve un oggetto PersistableBundle. Pertanto, non usare onSaveInstanceState() per conservare lo stato dell'attività root dell'app durante un riavvio del dispositivo.

Nota: questo valore attributo influisce sul comportamento dell'app solo se è impostato sull'attività principale dell'app.

persistAcrossReboots

Lo stato di questa attività viene mantenuto, insieme allo stato di ogni attività più in alto nello stack back che ha il proprio attributo persistableMode impostato su persistAcrossReboots. Se un'attività non ha un attributo persistableMode impostato su persistAcrossReboots o se viene avviata utilizzando il flag Intent.FLAG_ACTIVITY_NEW_DOCUMENT, l'attività, insieme a tutte le attività che si trovano in una posizione più alta del back stack, non viene conservata.

Quando un intent carica un'attività il cui attributo persistableMode è impostato su persistAcrossReboots nella tua app, l'attività riceve un oggetto PersistableBundle nel metodo onCreate(). Pertanto, puoi utilizzare onSaveInstanceState() per conservare lo stato di un'attività a livello di riavvio del dispositivo, a condizione che il relativo attributo persistableMode sia impostato su persistAcrossReboots.

Nota: questo valore attributo influisce sul comportamento dell'app anche se è impostato su un'attività diversa dall'attività principale dell'app.

persistNever

Lo stato dell'attività non viene mantenuto.

Nota: questo valore attributo influisce sul comportamento dell'app solo se è impostato sull'attività principale dell'app.

Questo attributo è stato introdotto nel livello API 21.

android:permission
Il nome di un'autorizzazione che i client devono avere per avviare l'attività o farla rispondere a un intent. Se al chiamante di startActivity() o startActivityForResult() non viene concessa l'autorizzazione specificata, il suo intent non viene mostrato all'attività.

Se questo attributo non è impostato, all'attività viene applicata l'autorizzazione impostata dall'attributo permission dell'elemento <application>. Se non viene impostato nessuno dei due attributi, l'attività non è protetta da un'autorizzazione.

Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni della panoramica del file manifest dell'app e i suggerimenti per la sicurezza.

android:process
Il nome del processo in cui viene eseguita l'attività. Normalmente, tutti i componenti di un'applicazione vengono eseguiti in un nome di processo predefinito creato per l'applicazione e non è necessario utilizzare questo attributo. Tuttavia, se necessario, puoi sostituire il nome del processo predefinito con questo attributo, in modo da distribuire i componenti dell'app in più processi.

Se il nome assegnato a questo attributo inizia con i due punti (:), quando è necessario viene creato un nuovo processo privato per l'applicazione e l'attività viene eseguita in questo processo.

Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con quel nome, a condizione che disponga dell'autorizzazione necessaria. In questo modo i componenti di applicazioni diverse possono condividere un processo, riducendo l'utilizzo delle risorse.

L'attributo process dell'elemento <application> può impostare un nome di processo predefinito diverso per tutti i componenti.

android:relinquishTaskIdentity
Indica se l'attività rinuncia ai propri identificatori di attività a un'attività di livello superiore nello stack di attività. Un'attività la cui attività principale ha questo attributo impostato su "true" sostituisce la Intent di base con quella dell'attività successiva nell'attività.

Se anche l'attività successiva ha questo attributo impostato su "true", restituisce il valore Intent di base a qualsiasi attività avviata nella stessa attività. L'operazione continua per ogni attività finché non viene rilevata un'attività con questo attributo impostato su "false". Il valore predefinito è "false".

Questo attributo impostato su "true" consente inoltre all'attività di usare l'ActivityManager.TaskDescription per modificare etichette, colori e icone nella schermata Recenti.

android:resizeableActivity

Specifica se l'app supporta la modalità multi-finestra. Puoi impostare questo attributo nell'elemento <activity> o <application>.

Se imposti questo attributo su "true", l'utente può avviare l'attività in modalità schermo diviso e formato libero. Se imposti l'attributo su "false", l'app non può essere testata o ottimizzata per un ambiente multi-finestra. Il sistema può comunque impostare l'attività in modalità multi-finestra con la modalità di compatibilità applicata.

L'impostazione di questo attributo su "false" non garantisce che non ci siano altre app in modalità multi-finestra visibili sullo schermo, ad esempio in modalità Picture in picture o su altri display. Pertanto, l'impostazione di questo flag non significa che l'app ha accesso esclusivo alle risorse.

Se la tua app ha come target il livello API 24 o superiore e non specifichi un valore per questo attributo, il valore predefinito dell'attributo è "true".

Se la tua app ha come target il livello API 31 o superiore, questo attributo funziona in modo diverso su schermi piccoli e grandi:

  • Schermi grandi (sw >= 600 dp): tutte le app supportano la modalità multi-finestra. L'attributo indica se un'app può essere ridimensionata, non se supporta la modalità multi-finestra. Se resizeableActivity="false", l'app viene messa in modalità di compatibilità quando necessario per conformarsi alle dimensioni del display.
  • Schermate piccole (sw < 600dp): se resizeableActivity="true" e la larghezza e l'altezza minima dell'attività rientrano nei requisiti della modalità multi-finestra, l'app supporta la modalità multi-finestra. Se resizeableActivity="false", l'app non supporta la modalità multi-finestra a prescindere dall'altezza e dalla larghezza minime dell'attività.

Nota: i produttori di dispositivi possono sostituire il comportamento del livello API 31.

Questo attributo è stato aggiunto al livello API 24.

Nota: il valore dell'attività principale di un'attività viene applicato a tutte le attività aggiuntive avviate nell'attività. In altre parole, se l'attività principale di un'attività è ridimensionabile, il sistema considera tutte le altre attività nell'attività come ridimensionabili. Se l'attività principale non è ridimensionabile, le altre attività nell'attività non sono ridimensionabili.

android:screenOrientation

L'orientamento dell'attività sul display del dispositivo.

Su Android 7.0 (livello API 24) e versioni successive, il sistema ignora le modifiche di runtime a questo attributo se l'attività è in modalità multi-finestra.

Su Android 12 (livello API 31) e versioni successive, i produttori di dispositivi possono configurare singoli schermi dei dispositivi (ad esempio lo schermo di un tablet di un pieghevole) in modo che ignorino la specifica di orientamento e che l'app specificata come solo verticale sia in posizione verticale ma con effetto letterbox sui display orizzontali. In questo modo l'app ha ancora proporzioni verticali, ma orienta l'app per una migliore usabilità.

Il valore può essere una qualsiasi delle seguenti stringhe:

"unspecified" Il valore predefinito. Il sistema sceglie l'orientamento. Il criterio utilizzato e, di conseguenza, le scelte effettuate in contesti specifici potrebbero variare in base al dispositivo.
"behind" Lo stesso orientamento dell'attività immediatamente sottostante nell'elenco attività.
"landscape" Orientamento orizzontale (il display è più largo che alto).
"portrait" Orientamento verticale (il display è più alto che largo).
"reverseLandscape" Orientamento orizzontale nella direzione opposta rispetto all'orientamento orizzontale normale. Aggiunta nel livello API 9.
"reversePortrait" Orientamento verticale nella direzione opposta rispetto a quella verticale. Aggiunta nel livello API 9.
"sensorLandscape" Orientamento orizzontale, ma può essere normale o orizzontale invertita in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Aggiunta nel livello API 9.
"sensorPortrait" Orientamento verticale, ma può essere normale o inversa, in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Tuttavia, a seconda della configurazione del dispositivo, la rotazione capovolta potrebbe non essere consentita. Aggiunta nel livello API 9.
"userLandscape" Orientamento orizzontale, ma può essere normale o orizzontale invertita in base al sensore del dispositivo e alle preferenze dell'utente. Aggiunta nel livello API 18.
"userPortrait" Orientamento verticale, ma può essere normale o inversa, in base al sensore del dispositivo e alle preferenze dell'utente. Tuttavia, a seconda della configurazione del dispositivo, la rotazione capovolta potrebbe non essere consentita. Aggiunta nel livello API 18.
"sensor" Il sensore di orientamento del dispositivo determina l'orientamento. L'orientamento del display dipende da come l'utente tiene il dispositivo in mano. Cambia quando l'utente ruota il dispositivo. Alcuni dispositivi, però, non ruotano in base a tutti e quattro gli orientamenti possibili, per impostazione predefinita. Per utilizzare tutti e quattro gli orientamenti, utilizza "fullSensor". Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore.
"fullSensor" Il sensore di orientamento del dispositivo determina l'orientamento per uno dei quattro orientamenti. È simile a "sensor", ma consente uno qualsiasi dei quattro orientamenti possibili dello schermo indipendentemente da ciò che il dispositivo supporta normalmente. Ad esempio, alcuni dispositivi non utilizzano in genere l'orientamento verticale o orizzontale invertito, ma ciò consente questi orientamenti. Aggiunta nel livello API 9.
"nosensor" L'orientamento viene determinato senza riferimento a un sensore di orientamento fisico. Il sensore viene ignorato, quindi il display non ruota in base a come l'utente sposta il dispositivo.
"user" Orientamento preferito corrente dell'utente.
"fullUser" Se l'utente ha bloccato la rotazione basata sul sensore, il comportamento è uguale a user, altrimenti funziona come fullSensor e consente uno dei quattro possibili orientamenti dello schermo. Aggiunta nel livello API 18.
"locked" Blocca l'orientamento sulla rotazione corrente, qualunque sia. Aggiunto nel livello API 18.

Nota: quando dichiari uno dei valori orizzontale o verticale, è considerato un requisito rigido per l'orientamento in cui viene eseguita l'attività. Il valore dichiarato consente il filtro in base a servizi come Google Play, quindi la tua applicazione è disponibile solo per i dispositivi che supportano l'orientamento richiesto dalle tue attività. Ad esempio, se dichiari "landscape", "reverseLandscape" o "sensorLandscape", la tua applicazione è disponibile solo per i dispositivi che supportano l'orientamento orizzontale.

Inoltre, dichiara esplicitamente che la tua applicazione richiede un orientamento verticale o orizzontale con l'elemento <uses-feature>, ad esempio <uses-feature android:name="android.hardware.screen.portrait"/>. Si tratta di un comportamento di filtro fornito da Google Play e da altri servizi che lo supportano e la piattaforma stessa non controlla se la tua app può essere installata quando un dispositivo supporta solo determinati orientamenti.

android:showForAllUsers

Indica se l'attività viene mostrata quando l'utente corrente del dispositivo è diverso dall'utente che ha avviato l'attività. Puoi impostare questo attributo su un valore letterale, come "true" o "false", oppure su una risorsa o su un attributo del tema contenente un valore booleano.

Questo attributo è stato aggiunto al livello API 23.

android:stateNotNeeded
Indica se l'attività può essere terminata e riavviata correttamente senza averne salvato lo stato. È "true" se può essere riavviato senza riferimento allo stato precedente e "false" se è richiesto lo stato precedente. Il valore predefinito è "false".

Normalmente, prima che un'attività venga arrestata temporaneamente per risparmiare risorse, viene chiamato il relativo metodo onSaveInstanceState(). Questo metodo archivia lo stato attuale dell'attività in un oggetto Bundle, che viene passato a onCreate() quando l'attività viene riavviata. Se questo attributo è impostato su "true", onSaveInstanceState() potrebbe non essere chiamato e onCreate() viene trasmesso null invece di Bundle, come quando l'attività inizia per la prima volta.

Un'impostazione "true" indica che l'attività può essere riavviata senza stato mantenuta. Ad esempio, l'attività che mostra la schermata Home utilizza questa impostazione per assicurarsi che non venga rimossa in caso di arresto anomalo per qualche motivo.

android:supportsPictureInPicture

Specifica se l'attività supporta la visualizzazione Picture in picture.

android:taskAffinity
L'attività per cui l'attività ha un'affinità. Le attività con la stessa affinità concettualmente appartengono alla stessa attività, alla stessa "applicazione" dal punto di vista dell'utente. L'affinità di un'attività è determinata dall'affinità della sua attività principale.

L'affinità determina due cose: l'attività per la quale l'attività viene associata di nuovo l'attributo padre (visualizza l'attributo allowTaskReparenting) e l'attività che ospita l'attività quando viene avviata con il flag FLAG_ACTIVITY_NEW_TASK.

Per impostazione predefinita, tutte le attività in un'applicazione hanno la stessa affinità. Puoi impostare questo attributo in modo da raggrupparli in modo diverso e persino inserire attività definite in applicazioni diverse all'interno della stessa attività. Per specificare che l'attività non ha un'affinità per nessuna attività, impostala su una stringa vuota.

Se questo attributo non è impostato, l'attività eredita l'affinità impostata per l'applicazione. Vedi l'attributo taskAffinity dell'elemento <application>. Il nome dell'affinità predefinita per un'applicazione è lo spazio dei nomi impostato nel file build.gradle.

android:theme
Un riferimento a una risorsa di stile che definisce un tema generale per l'attività. In questo modo viene impostato automaticamente il contesto dell'attività per l'utilizzo di theme e anche per determinare l'avvio di animazioni prima dell'avvio dell'attività, in modo che rispecchino meglio l'aspetto reale dell'attività.

Se questo attributo non è impostato, l'attività eredita il tema impostato per l'applicazione nel suo complesso, dall'attributo theme dell'elemento <application>. Se anche questo attributo non è impostato, viene utilizzato il tema di sistema predefinito. Per ulteriori informazioni, consulta Stili e temi.

android:uiOptions
Opzioni aggiuntive per l'interfaccia utente di un'attività. Deve essere uno dei seguenti valori.

ValoreDescrizione
"none"Nessuna opzione UI aggiuntiva. Questa è l'impostazione predefinita.
"splitActionBarWhenNarrow"Aggiunge una barra nella parte inferiore dello schermo per visualizzare le attività nella barra dell'app, nota anche come barra delle azioni, quando viene vincolata lo spazio orizzontale, ad esempio in modalità verticale su un telefono. Anziché visualizzare un numero ridotto di attività nella barra delle app nella parte superiore dello schermo, la barra delle app viene suddivisa nella sezione di navigazione superiore e nella barra inferiore per le attività. Ciò significa che viene resa disponibile una quantità ragionevole di spazio non solo per le attività, ma anche per gli elementi di navigazione e titolo in alto. Le voci di menu non sono suddivise tra le due barre. Vengono sempre visualizzati insieme.

Per ulteriori informazioni sulla barra delle app, vedi Aggiungere la barra delle app.

Questo attributo è stato aggiunto al livello API 14.

android:windowSoftInputMode
In che modo la finestra principale dell'attività interagisce con la finestra contenente la tastiera software sullo schermo. L'impostazione di questo attributo influisce su due fatti:
  • Indica se la tastiera su schermo è nascosta o visibile quando l'attività diventa l'elemento principale dell'attenzione dell'utente.
  • Consente di indicare se la finestra principale dell'attività è stata ridimensionata per fare spazio alla tastiera software o alla panoramica dei contenuti in modo da rendere visibile l'elemento attivo corrente quando parte della finestra è coperta dalla tastiera software.

L'impostazione deve essere uno dei valori elencati nella seguente tabella o una combinazione di un valore "state..." più un valore "adjust...". L'impostazione di più valori in entrambi i gruppi, ad esempio più valori "state...", genera risultati non definiti. I singoli valori sono separati da una barra verticale (|), come mostrato nell'esempio seguente:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

I valori impostati qui (diversi da "stateUnspecified" e "adjustUnspecified") sostituiscono quelli impostati nel tema.

Valore Descrizione
"stateUnspecified" Non viene specificato se la tastiera su schermo è nascosta o visibile. Il sistema sceglie uno stato appropriato o si basa sull'impostazione del tema.

Questa è l'impostazione predefinita per il comportamento della tastiera su schermo.

"stateUnchanged" La tastiera su schermo viene mantenuta nell'ultimo stato in cui si trovava, visibile o nascosta, quando l'attività viene in primo piano.
"stateHidden" La tastiera soft è nascosta quando l'utente sceglie l'attività, ovvero quando l'utente passa affermativamente all'attività, invece di tornare all'attività quando abbandona un'altra attività.
"stateAlwaysHidden" La tastiera su schermo è sempre nascosta quando è attiva l'opzione di input per la finestra principale dell'attività.
"stateVisible" La tastiera software viene resa visibile quando l'utente sceglie l'attività, ovvero quando l'utente passa affermativamente all'attività, invece di tornare indietro quando abbandona un'altra attività.
"stateAlwaysVisible" La tastiera su schermo è visibile quando la finestra è attiva per l'inserimento.
"adjustUnspecified" Non viene specificato se la finestra principale dell'attività si ridimensiona per fare spazio alla tastiera software o ai contenuti della panoramica della finestra per rendere visibile sullo schermo l'attuale stato attivo. Il sistema seleziona automaticamente una di queste modalità a seconda che i contenuti della finestra abbiano o meno visualizzazioni di layout in grado di scorrerne i contenuti. In questo caso, la finestra viene ridimensionata, partendo dal presupposto che lo scorrimento può rendere visibili tutti i contenuti della finestra all'interno di un'area più piccola.

Questa è l'impostazione predefinita per il comportamento della finestra principale.

"adjustResize" La finestra principale dell'attività viene sempre ridimensionata per fare spazio alla tastiera soft sullo schermo.
"adjustPan" La finestra principale dell'attività non viene ridimensionata per fare spazio alla tastiera software. Piuttosto, i contenuti della finestra si spostano automaticamente in modo che l'elemento attivo corrente non sia mai oscurato dalla tastiera e gli utenti possono sempre vedere ciò che stanno digitando. Questa opzione è generalmente meno desiderabile del ridimensionamento, perché l'utente potrebbe dover chiudere la tastiera soft per accedere e interagire con le parti oscurate della finestra.

Questo attributo è stato introdotto nel livello API 3.

introdotto in:
Livello API 1 per tutti gli attributi tranne noHistory e windowSoftInputMode, che sono stati aggiunti al livello API 3.
consulta anche:
<application>
<activity-alias>