Stay organized with collections Save and categorize content based on your preferences.
Syntaxe :
<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>
Conteneur(s) :
<application>
Peut contenir :
<intent-filter>
<meta-data>
<layout>
Description :
Déclare une activité (une sous-classe Activity) qui implémente une partie de l'interface utilisateur visuelle de l'application. Toutes les activités doivent être représentées par des éléments <activity> dans le fichier manifeste. Celles qui ne sont pas déclarées ne seront pas vues par le système et ne seront jamais exécutées.
Attributs :
android:allowEmbedded
Indiquez que l'activité peut être lancée en tant qu'enfant intégré à une autre activité. Cet attribut s'applique particulièrement aux cas de figure où l'enfant se trouve dans un conteneur tel qu'un écran appartenant à une autre activité. Par exemple, les activités utilisées pour les notifications personnalisées Wear doivent le déclarer pour que Wear puisse afficher l'activité dans son flux contextuel, qui se trouve dans un autre processus.

La valeur par défaut de cet attribut est false.

android:allowTaskReparenting
Indique si l'activité peut être déplacée de la tâche qui l'a démarrée vers la tâche avec laquelle elle a une affinité lorsqu'elle sera prête. Sa valeur est true si l'activité peut être déplacée, et false si elle doit rester dans la tâche initiale.

Si cet attribut n'est pas défini, la valeur spécifiée par l'attribut allowTaskReparenting correspondant de l'élément <application> s'applique à l'activité. La valeur par défaut est false.

Normalement, lorsqu'une activité est lancée, elle est associée à la tâche qui l'a démarrée et y reste jusqu'à la fin de sa durée de vie. Vous pouvez utiliser cet attribut pour remplacer la tâche parent de l'activité par celle avec laquelle elle a une affinité, lorsque sa tâche actuelle ne s'affichera plus. Généralement, il permet de déplacer les activités d'une application vers la tâche principale qui lui est associée.

Par exemple, si un e-mail contient un lien vers une page Web, le fait de cliquer sur ce lien renvoie une activité qui permet d'afficher la page. Cette activité est définie par l'application de navigateur, mais elle est lancée dans le cadre de la tâche de l'e-mail. Si son parent est remplacé par la tâche du navigateur, l'activité s'affichera lorsque le navigateur apparaîtra au premier plan, et sera absente lorsque la tâche de l'e-mail reviendra au premier plan.

L'affinité d'une activité est définie par l'attribut taskAffinity. L'affinité d'une tâche est déterminée par la lecture de l'affinité de son activité racine. Par conséquent, une activité racine est toujours définie dans une tâche ayant la même affinité. Étant donné que les activités avec les modes de lancement singleTask ou singleInstance peuvent seulement être à la racine d'une tâche, le changement de parent est limité aux modes standard et singleTop. Consultez également l'attribut launchMode.

android:alwaysRetainTaskState
Indique si le système conserve toujours l'état de la tâche dans laquelle l'activité est conservée. Si tel est le cas, la valeur est true. Si le système est autorisé à rétablir l'état initial de la tâche dans certains cas, cette valeur indique false. La valeur par défaut est false. Cet attribut n'a de sens que pour l'activité racine d'une tâche. Il est ignoré pour toutes les autres activités.

Normalement, le système efface une tâche (supprime toutes les activités de la pile au-dessus de l'activité racine) dans certains cas où l'utilisateur sélectionne à nouveau cette tâche depuis l'écran d'accueil. En règle générale, ce scénario se produit si l'utilisateur n'a pas consulté la tâche pendant un certain temps, par exemple 30 minutes.

Toutefois, lorsque cet attribut est défini sur true, les utilisateurs retournent toujours à la tâche dans l'état dans lequel ils l'avaient laissée, quelle que soit la façon dont ils y accèdent. Cette option est particulièrement utile, par exemple, dans une application telle que le navigateur Web qui contient beaucoup d'états (comme plusieurs onglets ouverts) que les utilisateurs ne souhaitent pas perdre.

android:autoRemoveFromRecents
Indique si les tâches lancées par des activités avec cet attribut resteront dans l'écran d'aperçu jusqu'à la fin de la dernière activité. Si la valeur est true, la tâche est automatiquement supprimée de l'écran d'aperçu. Cet attribut remplace l'utilisation de FLAG_ACTIVITY_RETAIN_IN_RECENTS par l'appelant. Il accepte uniquement une valeur booléenne : true ou false.
android:banner
Ressource drawable fournissant une bannière graphique étendue pour l'élément associé. Utilisez ce paramètre avec la balise <activity> afin de fournir une bannière par défaut pour une activité spécifique, ou avec la balise <application> afin de fournir une bannière pour toutes les activités de l'application.

Le système utilisera cette bannière pour représenter une application sur l'écran d'accueil d'Android TV. Étant donné qu'elle ne s'affiche que sur l'écran d'accueil, elle ne doit être spécifiée que par les applications dont l'activité gère l'intent CATEGORY_LEANBACK_LAUNCHER.

La définition de cet attribut doit renvoyer à une ressource drawable contenant l'image (par exemple, "@drawable/banner"). Il n'existe pas de bannière par défaut.

Au besoin, découvrez comment fournir une bannière sur l'écran d'accueil dans la documentation "Premiers pas avec les applications TV".

android:clearTaskOnLaunch
Indique si toutes les activités sont supprimées de la tâche, sauf l'activité racine, chaque fois qu'elle est relancée depuis l'écran d'accueil (true si la tâche est toujours supprimée de son activité racine, et false dans le cas contraire). La valeur par défaut est false. Cet attribut n'a de sens que pour les activités qui commencent une nouvelle tâche (l'activité racine). Il est ignoré pour toutes les autres activités de la tâche.

Lorsque la valeur est true, chaque fois que les utilisateurs relancent la tâche, ils sont redirigés vers son activité racine, indépendamment de leur dernière action dans la tâche et de l'option utilisée pour la quitter (bouton Retour ou Accueil). Lorsque cette valeur est false, la tâche peut être supprimée des activités dans certaines situations (voir l'attribut alwaysRetainTaskState), mais pas toujours.

Supposons qu'un utilisateur lance l'activité P depuis l'écran d'accueil, puis passe à l'activité Q. L'utilisateur appuie ensuite sur Accueil, puis revient à l'activité P. Normalement, l'utilisateur verra l'activité Q, car il s'agissait de sa dernière tâche dans la tâche P. Toutefois, si cette option est définie sur true, toutes les activités qui s'y rapportent (dans le cas présent, Q) sont supprimées lorsque l'utilisateur lance l'activité P depuis l'écran d'accueil. Dès lors, l'utilisateur ne voit que P lorsqu'il retourne dans la tâche.

Si cet attribut et allowTaskReparenting sont tous les deux true, toutes les activités qui peuvent changer de parent sont déplacées vers la tâche avec laquelle elles partagent une affinité. Les activités restantes sont abandonnées, comme décrit ci-dessus.

Cet attribut est ignoré si FLAG_ACTIVITY_RESET_TASK_IF_NEEDED n'est pas défini.

android:colorMode

Demande l'affichage de l'activité en mode large gamme de couleurs sur les appareils compatibles. En mode large gamme de couleurs, une fenêtre peut s'afficher en dehors de la gamme SRGB pour afficher des couleurs plus vives. Si l'appareil n'est pas compatible avec l'affichage en mode la large gamme de couleurs, cet attribut n'a aucun effet. Pour en savoir plus sur l'affichage en mode large gamme de couleurs, consultez la section Améliorer les graphiques avec des contenus à large gamme de couleur.

android:configChanges
Indique les changements de configuration que l'activité gère elle-même. Lorsqu'un changement de configuration se produit au moment de l'exécution, l'activité est arrêtée et redémarrée par défaut, mais la déclaration d'une configuration avec cet attribut empêche son redémarrage. Au lieu de cela, l'activité reste en cours d'exécution, et sa méthode onConfigurationChanged() est appelée.

Remarque : N'utilisez cet attribut que dans des cas particuliers, pour améliorer les performances et la réactivité de l'application. Pour en savoir plus, consultez Gérer les modifications de configuration.

Que vous n'en utilisiez qu'une ou plusieurs, les chaînes suivantes sont toutes des valeurs valides pour cet attribut. Plusieurs valeurs sont séparées par | (par exemple, "locale|navigation|orientation").

Valeur Description
density La densité d'affichage a changé. Il est possible que l'utilisateur ait spécifié une échelle différente ou qu'un autre écran soit maintenant actif.

Attribut ajouté au niveau d'API 24.

fontScale Le facteur de mise à l'échelle de la police a changé : l'utilisateur a sélectionné une nouvelle taille de police globale.
keyboard Le type de clavier a changé. Par exemple, l'utilisateur a branché un clavier externe.
keyboardHidden L'accessibilité du clavier a changé. Par exemple, l'utilisateur a dévoilé le clavier matériel.
layoutDirection La mise en page a changé de sens. Par exemple, elle est passée de gauche à droite (LTR) à droite à gauche (RTL).

Attribut ajouté au niveau d'API 17.

locale Les paramètres régionaux ont changé. L'utilisateur a sélectionné une nouvelle langue dans laquelle le texte doit s'afficher.
mcc Le mobile country code (MCC) IMSI a été modifié. Une carte SIM a été détectée, et le MCC a été mis à jour.
mnc Le mobile network code (MNC) IMSI a changé. Une carte SIM a été détectée, et le MNC a été mis à jour.
navigation Le type de navigation (trackball/pavé directionnel) a changé. Cela ne devrait normalement jamais se produire.
orientation

L'orientation de l'écran a changé : l'utilisateur a fait pivoter l'appareil.

Remarque : Si votre application cible Android 3.2 (niveau d'API 13) ou une version ultérieure, déclarez également les configurations "screenLayout" et "screenSize", car la mise en page et la taille de l'écran peuvent changer lorsqu'un appareil passe du mode portrait au mode paysage.

screenLayout La mise en page de l'écran a changé. Il est possible qu'un autre écran soit désormais actif.
screenSize La taille actuelle de l'écran a changé.

Ce changement concerne la taille actuellement disponible par rapport au format actuel. Il intervient lorsque l'utilisateur passe du mode paysage au mode portrait, et vice versa.

Attribut ajouté au niveau d'API 13.

smallestScreenSize La taille de l'écran physique a changé.

Il s'agit d'un changement de taille, quelle que soit l'orientation. Par conséquent, le changement n'intervient que lorsque la taille réelle de l'écran physique a changé (par exemple, en passant à un écran externe). Une modification de cette configuration correspond à une modification de la configuration de smallestWidth.

Attribut ajouté au niveau d'API 13.

touchscreen L'écran tactile a changé. Cela ne devrait normalement jamais se produire.
uiMode Le mode de l'interface utilisateur a changé. L'utilisateur a placé l'appareil sur la station d'accueil d'un bureau ou sur un support voiture, ou encore le mode Nuit a changé. Pour en savoir plus sur les différents modes d'interface utilisateur, consultez UiModeManager.

Attribut ajouté au niveau d'API 8.

Toutes ces modifications de configuration peuvent avoir une incidence sur les valeurs de ressources observées par l'application. Par conséquent, quand onConfigurationChanged() est appelé, il est généralement nécessaire de récupérer à nouveau toutes les ressources (y compris les mises en page de vues, les drawables, etc.) pour gérer correctement la modification.

Remarque : Pour gérer toutes les modifications de configuration liées au mode multifenêtre, utilisez à la fois "screenLayout" et "smallestScreenSize". Le mode multifenêtre est compatible avec Android 7.0 (niveau d'API 24) ou version ultérieure.

android:directBootAware

Indique si l'activité est compatible avec le démarrage direct, c'est-à-dire si elle peut être exécutée avant que l'utilisateur déverrouille l'appareil.

Remarque : Pendant le démarrage direct, une activité de votre application ne peut accéder qu'aux données stockées dans l'espace de stockage protégé par l'appareil.

La valeur par défaut est "false".

android:documentLaunchMode
Spécifie la façon dont la nouvelle instance d'une activité doit être ajoutée à une tâche chaque fois qu'elle est lancée. Cet attribut permet à l'utilisateur d'afficher plusieurs documents de la même application sur l'écran d'aperçu.

Cet attribut présente quatre valeurs qui entraînent les effets suivants lorsque l'utilisateur ouvre un document avec l'application :

Valeur Description
intoExisting Le système recherche une tâche dont l'intent de base ComponentName et l'URI de données correspondent à ceux de l'intent de lancement. Si le système trouve cette tâche, il l'efface et redémarre avec l'activité racine qui reçoit un appel à onNewIntent(android.content.Intent). Dans le cas contraire, il en crée une autre.
always L'activité crée une tâche pour le document, même s'il est déjà ouvert. Cela revient à définir les indicateurs FLAG_ACTIVITY_NEW_DOCUMENT et FLAG_ACTIVITY_MULTIPLE_TASK.
none L'activité ne crée pas de tâche pour elle-même. Il s'agit de la valeur par défaut, qui crée une tâche uniquement lorsque FLAG_ACTIVITY_NEW_TASK est défini. L'écran d'aperçu traite l'activité comme il le ferait par défaut : il n'affiche qu'une seule tâche pour l'application, qui reprend à partir de la dernière activité appelée par l'utilisateur.
never Cette activité n'est pas lancée dans un nouveau document, même si l'intent contient FLAG_ACTIVITY_NEW_DOCUMENT. La définition de cette option remplace le comportement des indicateurs FLAG_ACTIVITY_NEW_DOCUMENT et FLAG_ACTIVITY_MULTIPLE_TASK, s'ils sont définis dans l'activité, et l'écran d'aperçu affiche une seule tâche pour l'application, qui reprend à partir de la dernière activité appelée par l'utilisateur.

Remarque : Pour les valeurs autres que none et never, l'activité doit être définie avec launchMode="standard". Si cet attribut n'est pas spécifié, documentLaunchMode="none" est utilisé.

android:enabled
Indique si l'activité peut être instanciée ou non par le système. Si tel est le cas, cette valeur est "true". Dans le cas contraire, elle indique false. La valeur par défaut est true.

L'élément <application> possède son propre attribut enabled qui s'applique à tous les composants d'application, y compris les activités. Pour que le système puisse instancier l'activité, les attributs <application> et <activity> doivent être tous les deux définis sur la valeur par défaut true. Si un attribut est défini sur false, l'activité ne peut pas être instanciée.

android:excludeFromRecents
Indique si la tâche lancée par cette activité doit être exclue de la liste des applications récemment utilisées, sur l'écran d'aperçu. Autrement dit, lorsque cette activité est l'activité racine d'une nouvelle tâche, cet attribut détermine si la tâche ne devrait pas apparaître dans la liste des applications récentes. Définissez true si la tâche doit être exclue de la liste. Définissez false si elle doit être incluse. La valeur par défaut est false.

android:exported
Cet élément détermine si l'activité peut être lancée par des composants d'autres applications :

  • Si la valeur est true, l'activité est accessible à n'importe quelle application et peut être lancée avec le nom exact de la classe.
  • Si la valeur est false, l'activité ne peut être lancée que par des composants de la même application, des applications ayant le même ID utilisateur ou des composants système privilégiés. En l'absence de filtres d'intent, il s'agit de la valeur par défaut.

Si une activité dans votre application inclut des filtres d'intent, définissez cet élément sur true pour permettre à d'autres applications de la démarrer (par exemple, s'il s'agit de l'activité principale de l'application et qu'elle inclut la category "android.intent.category.LAUNCHER").

Si cet élément est défini sur false et qu'une application tente de démarrer l'activité, le système génère une exception ActivityNotFoundException.

Cet attribut n'est pas le seul moyen de limiter l'exposition d'une activité à d'autres applications. Les autorisations peuvent également servir à limiter les entités externes qui peuvent appeler l'activité (voir l'attribut permission).

android:finishOnTaskLaunch
Indique si une instance existante de l'activité doit être arrêtée (terminée), à l'exception de l'activité racine, chaque fois que l'utilisateur relance sa tâche (qu'il la sélectionne sur l'écran d'accueil). Cette valeur est true si l'activité doit être arrêté, et false dans le cas contraire. La valeur par défaut est false.

Si cet attribut et allowTaskReparenting sont tous les deux true, il prévaut sur l'autre. L'affinité de l'activité est ignorée. L'activité ne change pas parent, mais est détruite.

Cet attribut est ignoré si FLAG_ACTIVITY_RESET_TASK_IF_NEEDED n'est pas défini.

android:hardwareAccelerated
Indique si le rendu avec accélération matérielle doit être activé pour cette activité. true est défini si tel est le cas, et false dans le cas contraire. La valeur par défaut est false.

À partir d'Android 3.0, un moteur de rendu OpenGL avec accélération matérielle est disponible pour les applications. Il permet d'améliorer les performances de nombreuses opérations graphiques 2D courantes. Lorsque le moteur de rendu avec accélération matérielle est activé, la plupart des opérations dans Canvas, Paint, Xfermode, ColorFilter, Shader et Camera sont accélérées. Cela se traduit par des animations et un défilement plus fluides, ainsi que par une meilleure réactivité globale, même pour les applications qui n'utilisent pas explicitement les bibliothèques OpenGL du framework. En raison de l'augmentation des ressources requises pour activer l'accélération matérielle, votre application utilisera plus de RAM.

Notez que les opérations OpenGL en 2D ne sont pas toutes accélérées. Si vous activez le moteur de rendu avec accélération matérielle, testez votre application pour vous assurer qu'elle peut l'utiliser sans générer d'erreurs.

android:icon
Icône représentant l'activité. L'icône s'affiche pour les utilisateurs lorsqu'une représentation de l'activité est requise à l'écran. Par exemple, les icônes des activités qui lancent des tâches sont affichées dans la fenêtre du lanceur d'applications. Cette icône est souvent accompagnée d'un libellé (voir l'attribut android:label).

Cet attribut doit être défini comme référence à une ressource drawable contenant la définition de l'image. Si cette valeur n'est pas définie, l'icône spécifiée pour l'application dans son ensemble est utilisée à la place (consultez l'attribut icon de l'élément <application>).

L'icône de l'activité, définie ici ou par l'élément <application>, est également l'icône par défaut de tous les filtres d'intent de l'activité (voir l'attribut icon de l'élément <intent-filter>).

android:immersive
Définit le paramètre de mode immersif de l'activité actuelle. Si l'attribut android:immersive est défini sur true dans l'entrée du fichier manifeste de l'application pour cette activité, l'élément FLAG_IMMERSIVE du membre ActivityInfo.flags est toujours défini, même si le mode immersif est modifié au moment de l'exécution à l'aide de la méthode setImmersive().
android:label
Libellé compréhensible de l'activité. Le libellé s'affiche à l'écran lorsque l'activité doit être présentée à l'utilisateur. Il s'affiche souvent avec l'icône d'activité.

Si cet attribut n'est pas défini, le libellé défini pour l'application dans son ensemble est utilisé à la place (consultez l'attribut label de l'élément <application>).

Le libellé de l'activité, défini ici ou par l'élément <application>, est également le libellé par défaut de tous les filtres d'intent de l'activité (voir l'attribut label de l'élément <intent-filter>).

Le libellé doit être défini comme une référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes de l'interface utilisateur. Toutefois, lorsque vous développez l'application, vous pouvez également le définir comme une chaîne brute.

android:launchMode
Instructions sur le mode de lancement de l'activité. Cinq modes fonctionnent conjointement avec des indicateurs d'activité (constantes FLAG_ACTIVITY_*) dans les objets Intent pour déterminer ce qui doit se passer lorsque l'activité est appelée pour gérer un intent. Les voici :

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

Le mode par défaut est standard.

Comme le montre le tableau ci-dessous, les modes se divisent en deux groupes principaux, avec les activités standard et singleTop d'un côté, et singleTask, singleInstance et singleInstancePerTask de l'autre. Une activité avec le mode de lancement standard ou singleTop peut être instanciée plusieurs fois. Les instances peuvent appartenir à n'importe quelle tâche et se trouver n'importe où dans la tâche. En règle générale, elles sont lancées dans la tâche appelée startActivity(), sauf si l'objet Intent contient une instruction FLAG_ACTIVITY_NEW_TASK, auquel cas une autre tâche est choisie (voir l'attribut taskAffinity).

En revanche, les activités singleTask, singleInstance et singleInstancePerTask ont des comportements différents. singleInstancePerTask est toujours à la racine de la tâche de l'activité. De plus, l'appareil ne peut contenir qu'une seule instance de l'activité singleInstance à la fois, tandis que l'activité singleInstancePerTask peut être instanciée plusieurs fois dans différentes tâches lorsque FLAG_ACTIVITY_MULTIPLE_TASK ou FLAG_ACTIVITY_NEW_DOCUMENT est défini. Une activité avec le mode de lancement singleTask combine les comportements de singleInstance et singleInstancePerTask : l'activité peut être instanciée plusieurs fois et peut se trouver n'importe où dans une tâche de même affinité (taskAffinity). Pendant ce temps, l'appareil ne peut contenir qu'une seule tâche pour localiser l'activité singleTask à la racine de la tâche.

Les modes standard et singleTop diffèrent les uns des autres à un niveau : à chaque fois nouvel intent pour une activité standard, une nouvelle instance de la classe est créée pour répondre à cet intent. Chaque instance gère un seul intent. De même, une nouvelle instance d'une activité singleTop peut également être créée pour gérer un nouvel intent. Toutefois, si la tâche cible possède déjà une instance de l'activité en haut de sa pile, cette instance recevra le nouvel intent (dans un appel onNewIntent()). Aucune instance ne sera créée. Dans d'autres cas, par exemple si une instance existante de l'activité singleTop se trouve dans la tâche cible, mais pas en haut de la pile, ou si elle se trouve en haut d'une pile, mais pas dans la tâche cible, une instance sera créée et transférée vers la pile.

De même, si vous accédez à une activité de la pile actuelle, le comportement est déterminé par le mode de lancement de l'activité parent. Si l'activité parent utilise le mode de lancement singleTop (ou que l'intent up contient FLAG_ACTIVITY_CLEAR_TOP), le parent est placé en haut de la pile, et son état est préservé. L'intent de navigation est reçu par la méthode onNewIntent() de l'activité parent. Si l'activité parent utilise le mode de lancement standard (et que l'intent up ne contient pas FLAG_ACTIVITY_CLEAR_TOP), l'activité actuelle et son parent sont tous les deux supprimés de la pile, et une nouvelle instance de l'activité parent est créée pour recevoir l'intent de navigation.

L'élément singleInstance diffère également de singleTask et singleInstancePerTask à un niveau : une activité avec le mode de lancement singleTask ou singleInstancePerTask permet aux autres activités (standard et singleTop) de faire partie de sa tâche. En revanche, une activité singleInstance n'autorise aucune autre activité à faire partie de sa tâche. Il doit s'agir de la seule activité de la tâche. Si une autre activité démarre, elle sera attribuée à une autre tâche, comme si FLAG_ACTIVITY_NEW_TASK était dans l'intent.

Cas d'utilisation Mode de lancement Plusieurs instances ? Commentaires
Lancements normaux pour la plupart des activités standard Oui Par défaut. Le système crée toujours une instance de l'activité dans la tâche cible et y achemine l'intent.
singleTop Conditionnellement Si une instance de l'activité existe déjà en haut de la tâche cible, le système achemine l'intent vers cette instance via un appel à sa méthode onNewIntent(), au lieu de créer une instance de l'activité.
Lancements spécialisés
(non recommandés pour une utilisation générale)
singleTask Conditionnellement Le système crée l'activité à la racine d'une nouvelle tâche ou localise l'activité au niveau d'une tâche existante avec la même affinité. Si une instance de l'activité existe déjà et se trouve à la racine de la tâche, le système achemine l'intent vers l'instance existante via un appel à sa méthode onNewIntent(), au lieu d'en créer une.
singleInstance Non Identique à singleTask", sauf que le système ne lance aucune autre activité dans la tâche contenant l'instance. L'activité est toujours le seul et unique membre de sa tâche.
singleInstancePerTask Conditionnellement L'activité ne peut être exécutée qu'en tant qu'activité racine de la tâche (en tant que première activité qui l'a créée). Par conséquent, il n'y aura qu'une seule instance de cette activité dans une tâche, mais celle-ci peut être instanciée plusieurs fois dans différentes tâches.

Comme indiqué dans le tableau ci-dessus, standard est le mode par défaut et convient à la plupart des types d'activités. SingleTop est également un mode de lancement courant et utile pour de nombreux types d'activités. Les autres modes (singleTask, singleInstance et singleInstancePerTask) ne sont pas adaptés pour la plupart des applications, car ils entraînent un modèle d'interaction que les utilisateurs ne connaissent pas et qui sont très différents de la plupart des autres applications.

Quel que soit le mode de lancement choisi, assurez-vous de tester l'usabilité de l'activité pendant le lancement et lorsque vous y retournez à partir d'autres activités et tâches à l'aide du bouton Retour.

Pour en savoir plus sur les modes de lancement et leurs interactions avec les indicateurs d'intent, consultez le document Tâches et pile "Retour".

android:lockTaskMode
Détermine comment le système présente cette activité lorsque l'appareil s'exécute en mode tâches verrouillées.

Android peut exécuter des tâches selon une approche immersive appelée "mode tâches verrouillées". Lorsque le système s'exécute en mode tâches verrouillées, les utilisateurs d'appareils ne peuvent généralement pas voir les notifications, accéder aux applications non autorisées ni revenir à l'écran d'accueil (sauf si l'application Home est sur la liste d'autorisation). Seules les applications ajoutées à la liste d'autorisation par un outil de contrôle des règles relatives aux appareils (DPC) peuvent s'exécuter lorsque le système est en mode tâches verrouillées. Toutefois, le système et les applications privilégiées peuvent s'exécuter en mode tâches verrouillées sans être ajoutés à la liste d'autorisation.

Cette valeur peut correspondre à l'une des valeurs de chaîne R.attr.lockTaskMode suivantes :

Valeur Description
"normal" Valeur par défaut. Il s'agit de la valeur par défaut. Les tâches ne sont pas lancées en mode tâches verrouillées, mais peuvent y être placées en appelant startLockTask().
"never"

Les tâches ne sont pas lancées en mode tâches verrouillées, et l'utilisateur de l'appareil ne peut pas les épingler à partir de l'écran d'aperçu.

Remarque : Ce mode n'est disponible que pour les applications système et privilégiées. Les applications non privilégiées ayant cette valeur sont traitées comme normal.

"if_whitelisted" Si l'outil DPC autorise ce package à l'aide de DevicePolicyManager.setLockTaskPackages(), ce mode est identique à always, sauf que l'activité doit appeler stopLockTask() avant de pouvoir terminer s'il s'agit de la dernière tâche verrouillée. Si l'outil DPC n'autorise pas ce package, ce mode est identique à normal.
"always"

Les tâches associées à cette activité sont toujours lancées en mode tâches verrouillées. Si le système est déjà en mode tâches verrouillées au lancement de cette tâche, la nouvelle tâche est lancée en plus de la tâche actuelle. Pour que les tâches lancées dans ce mode quittent le mode tâches verrouillées, appelez finish().

Remarque : Ce mode n'est disponible que pour les applications système et privilégiées. Les applications non privilégiées ayant cette valeur sont traitées comme normal.

Cet attribut a été introduit dans le niveau d'API 23.

android:maxRecents
Nombre maximal de tâches associées à cette activité dans l'écran d'aperçu. Lorsque ce nombre d'entrées est atteint, le système supprime de l'écran d'aperçu l'instance la moins récemment utilisée. Les valeurs valides sont comprises entre 1 et 50 (25 sur les appareils à faible mémoire). Le chiffre zéro n'est pas valide. Il doit s'agir d'un nombre entier, tel que 50. La valeur par défaut est 16.
android:maxAspectRatio

Format maximal accepté par l'activité. Si l'application s'exécute sur un appareil dont le format est plus large, le système recadre automatiquement l'application, laissant des portions de l'écran inutilisées pour qu'elle puisse s'exécuter au format maximal spécifié.

Le format maximal est exprimé sous la forme décimale correspondant au quotient de la dimension la plus longue de l'appareil, divisé par sa dimension la plus courte. Par exemple, si le format maximal est de 7:3, définissez la valeur de cet attribut sur 2,33.

Sur les appareils non connectés, la valeur de cet attribut doit être 1,33 ou supérieure. Sur les accessoires connectés, elle doit être de 1 ou plus. Dans le cas contraire, le système ignore la valeur définie.

Remarque : Cet attribut est ignoré si la valeur resizeableActivity de l'activité est définie sur "true", car cela signifie que votre activité accepte toutes les tailles.

Pour en savoir plus sur cet attribut, consultez la section Déclarer un format maximal sous Déclarer une compatibilité d'écran limitée.

android:multiprocess
Indique si une instance de l'activité peut être lancée dans le processus du composant à l'origine de l'activité (true si tel est le cas et false dans le cas contraire). La valeur par défaut est false.

Normalement, une nouvelle instance d'une activité est lancée dans le processus de l'application qui l'a définie. Toutes les instances de l'activité s'exécutent donc dans le même processus. Toutefois, si cette option est définie sur true, les instances de l'activité peuvent s'exécuter dans plusieurs processus, ce qui permet au système de créer des instances partout où elles sont utilisées (à condition que les autorisations le permettent), ce qui n'est presque jamais nécessaire ni souhaitable.

android:name
Nom de la classe qui implémente l'activité, sous-classe de Activity. La valeur de l'attribut doit être un nom de classe complet (par exemple, com.example.project.ExtracurricularActivity). Cependant, pour faire court, si le premier caractère du nom est un point (par exemple, .ExtracurricularActivity), il est ajouté à l'espace de noms spécifié dans le fichier build.gradle.

Une fois votre application publiée, vous ne devez pas modifier ce nom (sauf si vous avez défini android:exported="false").

Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.

android:noHistory
Indique si l'activité doit être supprimée de la pile d'activités et terminée (méthode finish() appelée) lorsque l'utilisateur la quitte et qu'elle n'est plus visible à l'écran (true si elle doit être terminée, et false dans le cas contraire). La valeur par défaut est false.

La valeur true signifie que l'activité ne laissera pas de trace historique. Elle ne restera pas dans la pile d'activités de la tâche. L'utilisateur ne pourra donc pas y revenir. Dans ce cas, onActivityResult() n'est jamais appelé si vous démarrez une autre activité pour démarrer un processus à partir de cette activité.

Cet attribut a été introduit dans le niveau d'API 3.

android:parentActivityName
Nom de classe du parent logique de l'activité. Le nom ici doit correspondre au nom de classe attribué à l'attribut android:name de l'élément <activity> correspondant.

Le système lit cet attribut pour déterminer quelle activité doit démarrer lorsque l'utilisateur appuie sur le bouton "Haut" de la barre d'action. Le système peut également utiliser ces informations pour synthétiser une pile d'activités antérieure avec TaskStackBuilder.

Pour prendre en charge les niveaux d'API 4 à 16, vous pouvez également déclarer l'activité parent avec un élément <meta-data> qui spécifie une valeur pour "android.support.PARENT_ACTIVITY". Exemple :

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

Pour en savoir plus sur la déclaration de l'activité parent afin de permettre la navigation vers le haut, consultez la section Ajouter la navigation vers le haut.

Cet attribut a été introduit dans le niveau d'API 16.

android:persistableMode

Définit la manière dont l'instance d'une activité est préservée dans une tâche associée lors des redémarrages d'appareils.

Si l'activité racine d'une tâche définit la valeur de cet attribut sur persistRootOnly, seule l'activité racine est conservée. Dans le cas contraire, les activités qui se trouvent plus haut dans la pile "Retour" de la tâche sont examinées. Toute activité qui définit la valeur de cet attribut sur persistAcrossReboots est conservée.

Si vous utilisez cet attribut, vous devez lui attribuer la valeur suivante :

Valeur Description
persistRootOnly Valeur par défaut. Lorsque le système redémarre, la tâche est conservée, mais seul l'intent de lancement de l'activité racine est utilisé.

Lorsque l'intent de lancement de votre application charge l'activité racine de votre application, l'activité ne reçoit pas d'objet PersistableBundle. Par conséquent, n'utilisez pas onSaveInstanceState() pour préserver l'état de l'activité racine de votre application lors du redémarrage d'un appareil.

Remarque : Cette valeur d'attribut n'affecte le comportement de votre application que si elle est définie sur l'activité racine de votre application.

persistAcrossReboots

L'état de cette activité est conservé, ainsi que l'état de chaque activité située plus haut dans la pile "Retour", dont l'attribut persistableMode est défini sur persistAcrossReboots. Si une activité ne comporte pas d'attribut persistableMode défini sur persistAcrossReboots ou qu'elle est lancée via l'indicateur Intent.FLAG_ACTIVITY_NEW_DOCUMENT, cette activité, ainsi que toutes les activités situées plus haut dans la pile "Retour" ne sont pas conservées.

Lorsqu'un intent charge une activité dont l'attribut persistableMode est défini sur persistAcrossReboots dans votre application, l'activité reçoit un objet PersistableBundle dans sa méthode onCreate(). Par conséquent, vous pouvez utiliser onSaveInstanceState() pour conserver l'état d'une activité lors du redémarrage d'un appareil, à condition que l'attribut persistableMode soit défini sur persistAcrossReboots.

Remarque  : Cette valeur d'attribut affecte le comportement de votre application, même si elle est définie sur une activité autre que l'activité racine de votre application.

persistNever

L'état de l'activité n'est pas conservé.

Remarque : Cette valeur d'attribut n'affecte le comportement de votre application que si elle est définie sur l'activité racine de votre application.

Cet attribut a été introduit dans le niveau d'API 21.

android:permission
Nom d'une autorisation que les clients doivent avoir pour lancer l'activité ou qu'ils doivent obtenir pour répondre à un intent. Si un appelant de startActivity() ou startActivityForResult() n'a pas reçu l'autorisation spécifiée, son intent ne sera pas transmis à l'activité.

Si cet attribut n'est pas spécifié, l'autorisation définie par l'attribut permission de l'élément <application> s'applique à l'activité. Si aucun attribut n'est défini, l'activité n'est pas protégée par une autorisation.

Pour en savoir plus sur les autorisations, consultez la section Autorisations dans l'introduction et un autre document intitulé Sécurité et autorisations.

android:process
Nom du processus dans lequel l'activité doit s'exécuter. Normalement, tous les composants d'une application s'exécutent avec un nom de processus par défaut créé pour celle-ci, et vous n'avez pas besoin d'utiliser cet attribut. Toutefois, si nécessaire, vous pouvez remplacer le nom du processus par défaut par cet attribut, ce qui vous permet de répartir les composants de l'application sur plusieurs processus.

Si le nom assigné à cet attribut commence par le signe deux-points (:), un processus réservé à l'application est créé lorsque cela est nécessaire, et l'activité est exécutée dans ce processus. Si le nom du processus commence par une lettre minuscule, l'activité sera exécutée dans un processus global du même nom, à condition qu'elle soit autorisée à le faire. Cela permet aux composants de différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

L'attribut process de l'élément <application> peut définir un nom de processus par défaut différent pour tous les composants.

android:relinquishTaskIdentity
Indique si l'activité cède ses identifiants de tâche à une activité supérieure à celle-ci dans la pile de tâches. Une tâche dont l'attribut racine est défini sur true remplace l'intent de base par celui de l'activité suivante dans la tâche. Si l'attribut suivant est également défini sur true, l'intent de base sera généré pour toute activité lancée dans la même tâche. Le processus se poursuit pour chaque activité jusqu'à ce qu'une activité corresponde à l'attribut false. La valeur par défaut est false.

Cet attribut défini sur true permet également à l'activité d'utiliser ActivityManager.TaskDescription pour modifier les libellés, les couleurs et les icônes de l'écran d'aperçu.

resizeableActivity

Indique si l'application est compatible avec le mode multifenêtre. Vous pouvez définir cet attribut dans l'élément <activity> ou <application>.

Si vous définissez cet attribut sur "true", l'utilisateur peut lancer l'activité en mode écran partagé et en mode libre. Si vous le définissez sur "false", l'application ne peut pas être testée ni optimisée pour un environnement multifenêtre. Pour activer l'activité en mode multifenêtre, le système peut toujours appliquer le mode de compatibilité. Définir cet attribut sur "true" ne garantit pas non plus qu'aucune autre application en mode multifenêtre (telle que Picture-in-picture) n'est visible à l'écran ni sur d'autres écrans. Par conséquent, l'activation de cette option ne garantit pas que votre application dispose d'un accès exclusif aux ressources.

Si votre application cible le niveau d'API 24 ou supérieur, mais que vous ne spécifiez pas de valeur pour cet attribut, cette valeur sera définie par défaut sur "true".

Si votre application cible le niveau d'API 31 ou supérieur, cet attribut fonctionne différemment sur les petits et les grands écrans :

  • Grands écrans (SW = > 600 dp) : toutes les applications sont compatibles avec le mode multifenêtre. L'attribut indique si une application peut être redimensionnée (et non si elle est compatible avec le mode multifenêtre). Si la valeur est resizeableActivity="false", l'application passe en mode de compatibilité lorsque cela est nécessaire, conformément aux dimensions d'affichage.
  • Petits écrans (SW < 600 dp) : si resizeableActivity="true" et si la largeur et la hauteur minimales de l'activité sont conformes aux exigences du mode multifenêtre, l'application est compatible avec le mode multifenêtre. Si la valeur est resizeableActivity="false", l'application n'est pas compatible avec le mode multifenêtre, quelles que soient la largeur et la hauteur minimales de l'activité.

Remarque : Les fabricants d'appareils peuvent ignorer le comportement du niveau d'API 31.

Cet attribut a été ajouté au niveau d'API 24.

Remarque : La valeur de l'activité racine d'une tâche est appliquée à toutes les autres activités qui y sont lancées. Autrement dit, si l'activité racine d'une tâche peut être redimensionnée, le système considère toutes les autres activités de cette tâche comme redimensionnables. Si l'activité racine n'est pas redimensionnable, les autres activités de la tâche ne le sont pas.

android:screenOrientation
Orientation de l'écran de l'activité sur l'appareil. Le système ignore cet attribut si l'activité est en mode multifenêtre.

Cette valeur peut correspondre à l'une des chaînes suivantes :

unspecified Valeur par défaut. Le système choisit l'orientation. La règle utilisée et les choix effectués dans des contextes spécifiques peuvent varier d'un appareil à l'autre.
behind Même orientation que l'activité située juste en dessous dans la pile d'activités.
landscape Orientation paysage (l'écran est plus large que haut).
portrait Orientation portrait (l'écran est plus haut que large).
reverseLandscape Orientation paysage dans le sens opposé au mode paysage standard. Attribut ajouté au niveau d'API 9.
reversePortrait Orientation portrait dans le sens opposé au mode portrait standard. Attribut ajouté au niveau d'API 9.
sensorLandscape Orientation paysage standard ou inversée selon le capteur de l'appareil. Le capteur est utilisé même si l'utilisateur a verrouillé la rotation basée sur le capteur. Attribut ajouté au niveau d'API 9.
sensorPortrait Orientation portrait standard ou inversée selon le capteur de l'appareil. Le capteur est utilisé même si l'utilisateur a verrouillé la rotation basée sur le capteur. Attribut ajouté au niveau d'API 9.
userLandscape Orientation paysage standard ou inversée selon le capteur de l'appareil et les préférences de l'utilisateur. Attribut ajouté au niveau d'API 18.
userPortrait Orientation portrait standard ou inversée selon le capteur de l'appareil et les préférences de l'utilisateur. Attribut ajouté au niveau d'API 18.
sensor L'orientation est déterminée par le capteur d'orientation de l'appareil. L'orientation de l'écran dépend de la façon dont l'utilisateur tient l'appareil. Elle change lorsque l'utilisateur fait pivoter l'appareil. Cependant, certains appareils ne pivotent pas par défaut dans les quatre orientations possibles. Pour permettre les quatre orientations, utilisez "fullSensor". Le capteur est utilisé même si l'utilisateur a verrouillé la rotation basée sur le capteur.
fullSensor L'orientation est déterminée par le capteur d'orientation de l'appareil pour l'une des quatre orientations possibles. Cette méthode est semblable à "sensor", à la différence près qu'elle autorise l'une des quatre orientations d'écran possibles, quelles que soient les actions habituelles de l'appareil. Par exemple, certains appareils n'utilisent généralement pas le mode portrait ou paysage inversé, mais ces orientations sont alors activées. Attribut ajouté au niveau d'API 9.
nosensor L'orientation est déterminée sans tenir compte d'un capteur d'orientation physique. Le capteur est ignoré. L'écran ne pivote donc pas en fonction de la façon dont l'utilisateur déplace l'appareil.
user Orientation préférée actuelle de l'utilisateur.
fullUser Si l'utilisateur a verrouillé la rotation basée sur le capteur, le comportement est le même que l'attribut user. Sinon, le comportement est le même que fullSensor et l'une des quatre orientations d'écran est possible. Attribut ajouté au niveau d'API 18.
locked Verrouille la direction actuelle de l'orientation, quelle qu'elle soit. Attribut ajouté au niveau d'API 18.

Remarque : Lorsque vous déclarez l'une des valeurs paysage ou portrait, elle est considérée comme une exigence stricte pour l'orientation dans laquelle l'activité s'exécute. Par conséquent, la valeur que vous déclarez permet un filtrage par services tels que Google Play, afin que votre application ne soit disponible que sur les appareils compatibles avec l'orientation requise par vos activités. Par exemple, si vous déclarez "landscape", "reverseLandscape" ou "sensorLandscape", votre application ne sera disponible que pour les appareils compatibles avec l'orientation paysage. Cependant, vous devez également déclarer explicitement que votre application nécessite l'orientation portrait ou paysage avec l'élément <uses-feature> (par exemple, <uses-feature android:name="android.hardware.screen.portrait"/>). Il s'agit simplement d'un comportement de filtrage fourni par Google Play (et d'autres services compatibles). La plate-forme elle-même ne contrôle pas si votre application peut être installée lorsqu'un appareil n'accepte que certaines orientations.

android:showForAllUsers

Indique si l'activité est affichée lorsque l'utilisateur actuel de l'appareil est différent de celui qui a lancé l'activité. Vous pouvez définir cet attribut sur une valeur littérale ("true" ou "false") ou définir un attribut de ressource ou thématique contenant une valeur booléenne.

Cet attribut a été ajouté au niveau d'API 23.

android:stateNotNeeded
Indique si l'activité peut être fermée ou redémarrée sans avoir enregistré son état (true si elle peut être redémarrée sans référence à son état précédent, et false si son état précédent est requis). La valeur par défaut est false.

Normalement, avant qu'une activité ne soit temporairement arrêtée pour économiser des ressources, sa méthode onSaveInstanceState() est appelée. Cette méthode stocke l'état actuel de l'activité dans un objet Bundle, qui est ensuite transmis à onCreate() lorsque l'activité est redémarrée. Si cet attribut est défini sur true, onSaveInstanceState() ne peut pas être appelé, et onCreate() est transmis avec null à la place du bundle, comme c'était le cas lorsque l'activité a démarré pour la première fois.

Le paramètre true garantit que l'activité peut redémarrer sans que l'état ne soit conservé. Par exemple, l'activité qui affiche l'écran d'accueil utilise ce paramètre pour éviter qu'elle ne soit supprimée en cas de plantage quelconque.

supportsPictureInPicture

Indique si l'activité est compatible avec le mode d'affichage Picture-in-picture.

Cet attribut a été ajouté au niveau d'API 24.

android:taskAffinity
Tâche avec laquelle l'activité a une affinité. Les activités avec la même affinité appartiennent conceptuellement à la même tâche (à la même "application" du point de vue de l'utilisateur). L'affinité d'une tâche est déterminée par l'affinité de son activité racine.

Elle détermine deux choses : la nouvelle tâche parent vers laquelle l'activité est renvoyée (voir l'attribut allowTaskReparenting) et la tâche qui héberge l'activité lorsqu'elle est lancée avec l'indicateur FLAG_ACTIVITY_NEW_TASK.

Par défaut, toutes les activités d'une application ont la même affinité. Vous pouvez définir cet attribut pour les regrouper différemment, et même placer les activités définies dans différentes applications au sein de la même tâche. Pour spécifier que l'activité n'a aucune affinité avec une tâche, définissez-la sur une chaîne vide.

Si cet attribut n'est pas défini, l'activité hérite de l'affinité spécifiée pour l'application (voir l'attribut taskAffinity de l'élément <application>). Le nom de l'affinité par défaut d'une application est l'espace de noms défini dans le fichier build.gradle.

android:theme
Renvoie à une ressource de style définissant un thème général pour l'activité. Il définit automatiquement le contexte de l'activité pour l'utilisation de ce thème (voir setTheme()) et peut également entraîner des animations de "début" avant le lancement de l'activité (pour être encore plus fidèle à l'activité réelle).

Si cet attribut n'est pas spécifié, l'activité hérite du thème défini pour l'application dans son ensemble, à partir de l'attribut theme de l'élément <application>. Si cet attribut n'est pas non plus spécifié, le thème système par défaut est utilisé. Pour en savoir plus, consultez le guide du développeur Styles et thèmes.

android:uiOptions
Options supplémentaires pour l'interface utilisateur d'une activité.

Doit correspondre à l'une des valeurs suivantes.

ValeurDescription
"none"Aucune option d'interface utilisateur supplémentaire. Il s'agit de l'option par défaut.
"splitActionBarWhenNarrow"Ajoutez une barre en bas de l'écran pour afficher les tâches dans la barre d'application (également appelée barre d'action) lorsque l'espace horizontal de l'écran est limité (par exemple, en mode portrait sur un téléphone). Au lieu d'afficher quelques-unes des tâches qui apparaissent dans la barre d'application en haut de l'écran, celle-ci est divisée en deux sections : la partie de navigation supérieure et la barre de tâches inférieure. Vous disposerez ainsi d'un espace raisonnable non seulement pour les tâches, mais aussi pour la navigation et les éléments de titre dans la partie supérieure. Les éléments de menu ne sont pas répartis entre les deux barres. Ils apparaissent toujours ensemble.

Pour en savoir plus sur la barre d'application, reportez-vous au cours Ajouter la barre d'application.

Cet attribut a été ajouté au niveau d'API 14.

android:windowSoftInputMode
Interactions entre la fenêtre principale de l'activité et la fenêtre contenant le clavier virtuel à l'écran. Le paramètre de cet attribut a une incidence sur deux éléments :
  • État du clavier virtuel (masqué ou visible) lorsque l'activité est au centre de l'attention de l'utilisateur.
  • Ajustement apporté à la fenêtre principale de l'activité. Par exemple, sa taille peut être réduite afin de libérer de l'espace pour le clavier virtuel ou son contenu peut apparaître en panoramique pour que la cible actuelle soit visible lorsqu'une partie de la fenêtre est recouverte par le clavier virtuel.

Ce paramètre doit correspondre à l'une des valeurs répertoriées dans le tableau suivant, ou à une combinaison de la valeur state... et d'une valeur adjust.... La spécification de plusieurs valeurs dans l'un ou l'autre des groupes (plusieurs valeurs state..., par exemple) génère des résultats non définis. Les valeurs individuelles sont séparées par une barre verticale (|). Exemple :

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

Les valeurs spécifiées ici (autres que stateUnspecified et adjustUnspecified) remplacent les valeurs définies dans le thème.

Valeur Description
stateUnspecified L'état du clavier virtuel (masqué ou visible) n'est pas spécifié. Le système choisira un état approprié ou se basera sur le paramètre du thème.

Ce paramètre est le comportement par défaut du clavier virtuel.

stateUnchanged Le clavier virtuel est conservé dans son état précédent, qu'il soit visible ou masqué, lorsque l'activité apparaît au premier plan.
stateHidden Le clavier virtuel est masqué lorsque l'utilisateur choisit l'activité, c'est-à-dire lorsqu'il y accède l'activité explicitement au lieu d'y retourner en raison d'une autre activité.
stateAlwaysHidden Le clavier virtuel est toujours masqué lorsque la fenêtre principale de l'activité est sélectionnée.
stateVisible Le clavier virtuel est visible lorsque l'utilisateur choisit l'activité, c'est-à-dire lorsqu'il accède à l'activité de manière explicite au lieu d'y retourner après avoir quitté une autre activité.
stateAlwaysVisible Le clavier virtuel est visible lorsque la fenêtre est sélectionnée.
adjustUnspecified Ce champ n'est pas spécifié, que la fenêtre principale de l'activité soit redimensionnée pour faire de la place au clavier virtuel ou que le contenu de la fenêtre apparaisse en panoramique pour que l'élément sélectionné soit visible à l'écran. Le système sélectionne automatiquement l'un de ces modes selon que le contenu de la fenêtre comporte des vues de mise en page qui peuvent faire défiler leur contenu. Dans ce cas, la fenêtre est redimensionnée selon l'hypothèse que le défilement peut rendre tout contenu de la fenêtre visible dans une zone plus petite.

Il s'agit du paramètre par défaut pour le comportement de la fenêtre principale.

adjustResize La fenêtre principale de l'activité est toujours redimensionnée pour faire de la place au clavier virtuel à l'écran.
adjustPan La fenêtre principale de l'activité n'est pas redimensionnée pour faire de la place au clavier virtuel. À la place, le contenu de la fenêtre est automatiquement affiché en panoramique de sorte que la sélection active ne soit jamais masquée par le clavier et que les utilisateurs puissent toujours voir ce qu'ils saisissent. Ce comportement n'est généralement pas aussi souhaitable que le redimensionnement, car l'utilisateur peut être amené à fermer le clavier virtuel pour accéder à des parties masquées de la fenêtre et interagir avec elles.

Cet attribut a été introduit dans le niveau d'API 3.

Première apparition :
Niveau d'API 1 pour tous les attributs, à l'exception de noHistory et windowSoftInputMode, qui ont été ajoutés au niveau d'API 3
Voir aussi :
<application>
<activity-alias>