Qu'est-ce que "outils:contexte" dans les fichiers de mise en page Android?

à partir d'une nouvelle version récente de ADT, j'ai remarqué ce nouvel attribut sur les fichiers XML de mise en page, par exemple:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" />

pour quoi "outils:contexte" est-il utilisé?

comment connaît-il même le chemin exact de l'activité qui y est écrite? Regarde-t-il le paquet de l'application, dans le manifeste?

est-il limité aux classes qui étendent le contexte ou seulement des activités? Est-il utilisable pour les éléments ListView, etc.?

838
demandé sur R. Zagórski 2012-06-18 11:25:48

6 réponses

c'est très probablement l'activité que les outils de L'éditeur D'UI utilisent pour rendre votre mise en page (il trouvera le bon thème basé sur l'activité). Ceci est documenté ici (autour du milieu de l'article; abonnez-vous à cette page pour rester à jour).

382
répondu Nikolay Elenkov 2013-04-29 12:12:27

cet attribut est essentiellement la persistance de la sélection" activité associée " au-dessus de la mise en page. À l'exécution, une mise en page est toujours associée à une activité. Il peut être associé à plus d'un, mais au moins un. Dans l'outil, nous avons besoin de connaître ce mapping (qui à l'exécution se produit dans l'autre sens; une activité peut appeler setContentView(layout) pour afficher un layout) afin de piloter certaines fonctionnalités.

en ce moment, nous l'utilisons pour une chose seulement: choisir le bon thème à afficher pour une mise en page (puisque le fichier manifeste peut enregistrer des thèmes à utiliser pour une activité 151940920", et une fois que nous connaissons l'activité associée à la mise en page, nous pouvons choisir le bon thème à afficher pour la mise en page). Dans le futur, nous utiliserons ceci pour piloter des fonctionnalités supplémentaires - telles que le rendu de la barre d'action (qui est associée à l'activité), un endroit pour ajouter des handlers onClick, etc.

la raison pour laquelle il s'agit d'un outil: l'attribut namespace est qu'il ne s'agit que d'un mappage de designtime à utiliser par l'outil. La mise en page elle-même peut être utilisée par de multiples activités/fragments, etc. Nous voulons juste vous donner une façon de choisir une reliure designtime telle que nous pouvons par exemple montrer le bon thème; vous pouvez le changer à tout moment, tout comme vous pouvez changer nos reliures listview et fragment, etc.

(Voici la liste complète des modifications qui contient plus de détails sur ce )

Et oui, le lien de Nicolas énumérés ci-dessus montre comment la nouvelle configuration sélecteur ressemble et fonctionne

encore une chose: l'Espace-nom" tools " est spécial. L'outil d'empaquetage android sait l'ignorer, donc aucun de ces attributs ne sera empaqueté dans L'APK. Nous l'utilisons pour les métadonnées supplémentaires dans la mise en page. C'est aussi où par exemple les attributs pour supprimer les avertissements de peluche sont stockés -- comme outils:ignorer.

355
répondu Tor Norbye 2015-08-21 11:03:43

, Selon le Android Outils d'un Site de Projet :

outils:le contexte

cet attribut est typiquement défini sur l'élément racine d'un fichier XML de mise en page, et enregistre l'activité à laquelle la mise en page est associée (au moment de la conception, car évidemment une mise en page peut être utilisée par Plus d'une mise en page). Ceci sera par exemple utilisé par l'éditeur de mise en page pour deviner un thème par défaut, puisque les thèmes sont définis dans le manifeste et sont associés à des activités, et non à des mises en page. Vous pouvez utiliser le même préfixe de point que dans les manifestes pour simplement spécifier la classe d'activité sans le nom complet du paquet de demande comme préfixe.

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">  

Utilisé par: Disposition des rédacteurs en Studio Et Eclipse, de la Charpie

85
répondu anothercoder 2014-06-04 21:34:01

1.Description

tools: context = "activity name" il ne sera pas emballé dans le apk .Seul L'éditeur de mise en page ADT dans votre jeu de fichiers de mise en page correspondant au contexte de rendu, afficher votre mise en page actuelle dans le rendu du contexte est le nom de l'activité correspondant à l'activité, si l'activité dans le jeu de fichiers manifest est un thème, alors l'éditeur de mise en page ADT affichera votre mise en page actuelle selon le thème.Cela signifie que si vous mettez le MainActivity définir un Thème. La lumière (l'autre), puis vous voyez dans visual layout manager o le contrôle de fond de ce qui devrait être le thème. La Lumière ressemble.Seulement pour vous montrer ce que vous voyez est ce que vous obtenez des résultats.

certaines personnes voient comprendra certains, certaines personnes voient aussi ne sait pas, je vais ajouter quelques mots d'explication:

2.Échantillon

prendre un simple tools:text , par exemple, un peu plus d'image, pratique à en savoir plus sur le tools:context

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="sample name1" />

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="sample name2" />

enter image description here

TextView 1 adopté le android: text , et utiliser le tools:text dans le TextView 2, sur le côté droit de L'éditeur de mise en page affichera le sample name1 , le sample name2 deux font, si après que vous exécutez le code pour compiler, généré apk , affichage terminal seulement le sample name1 , ne montre pas le sample name2 les mots. Vous pouvez essayer de courir, voir comment l'effet.

3.Désignation spécifique

1.Le tools: context = "activity name" il ne sera pas empaqueté dans le apk (compréhension: l'équivalent de ceci est commenté, le compilé aucun effet.)

2.Seulement ADT éditeur de mise en page (i.e., pour l'icône ci-dessus sur le côté droit du simulateur) dans le jeu de fichier de mise en page correspondant pour le rendu du contexte, la mise en page du XML courant dans le rendu du contexte est le nom de l'activité correspondant à l'activité, si l'activité dans le fichier manifeste définit un thème, alors l'éditeur de mise en page ADT affichera votre mise en page actuelle selon le thème.Signifie que si vous définissez le MainActivity définir un Thème. La Lumière peut être aussi (autre).(comprendre: vous avez ajouté tools: context = "activity name" , la mise en page XML rend l'activité spécifiée, établit un thème dans le fichier de manifeste, illustré ci-dessus à droite le style du thème du simulateur suivra également les changements correspondant au thème.)

4.résumé

pour résumer, ces propriétés visent principalement au-dessus des bons outils, l'état de l'affichage de temps de débogage simulateur, et la compilation ne fonctionne pas,

6
répondu KeLiuyue 2017-10-18 11:54:14

"outils:le contexte" est l'une des caractéristiques de Conception qui peuvent faciliter la mise en page création en XML dans le cadre de développement. Cet attribut est utilisé pour montrer au cadre de développement quelle classe d'activité est choisie pour la mise en œuvre de la mise en page. En utilisant "outils:contexte", Android Studio choisit automatiquement le thème nécessaire pour la prévisualisation.

si vous souhaitez en savoir plus sur certains autres attributs et outils utiles pour le développement D'applications Android, jetez un oeil à ce note: http://cases.azoft.com/4-must-know-tools-for-effective-android-development /

5
répondu Mihir Patel 2016-07-13 11:08:28

tools:context=".MainActivity" cette ligne est utilisée dans le fichier xml qui indique le fichier source java utilisé pour accéder à ce fichier xml. cela signifie afficher cet aperçu xml pour les fichiers java en particulier.

1
répondu Nikita Prajapati 2017-09-13 06:24:21