web-dev-qa-db-fra.com

Que sont les "outils: contexte" dans Android fichiers de mise en page?

En commençant par une nouvelle version récente d’ADT, j’ai remarqué ce nouvel attribut dans les fichiers XML de présentation, 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" />

A quoi servent les "outils: contexte"?

Comment sait-il même le chemin exact de l'activité qui y est écrite? Regarde-t-il le paquet de l'application, à l'intérieur du manifeste?

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

898
android developer

Il s'agit de l'activité utilisée par l'éditeur d'interface utilisateur pour générer l'aperçu de votre mise en page. C'est documenté ici :

Cet attribut indique à quelle activité cette mise en page est associée par défaut. Cela active les fonctionnalités de l'éditeur ou de l'aperçu de la mise en page qui nécessitent une connaissance de l'activité, telles que le thème de la mise en page dans l'aperçu et l'emplacement où insérer les gestionnaires onClick lorsque vous les créez à partir d'un correctif rapide.

416
Nikolay Elenkov

Cet attribut est essentiellement la persistance de la sélection "Activité associée" au-dessus de la présentation. Au moment de l'exécution, une mise en page est toujours associée à une activité. Il peut bien sûr être associé à plusieurs, mais au moins un. Dans l'outil, nous avons besoin de connaître ce mappage (qui, au moment de l'exécution, a lieu dans le sens opposé; une activité peut appeler setContentView (layout) pour afficher un layout) afin de gérer certaines fonctionnalités.

Pour l’instant, nous ne l’utilisons que pour une chose: choisir le bon thème à afficher pour une mise en page (car le fichier manifeste peut enregistrer des thèmes à utiliser pour une activité , 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). À l'avenir, nous l'utiliserons pour créer des fonctionnalités supplémentaires - telles que le rendu de la barre d'actions (associée à l'activité), un emplacement pour ajouter des gestionnaires OnClick, etc.

La raison pour laquelle il s’agit d’un attribut tools: namespace est qu’il s’agit uniquement d’un mappage de conception destiné à être utilisé par l’outil. La mise en page elle-même peut être utilisée par plusieurs activités/fragments, etc. Nous souhaitons simplement vous donner le moyen de choisir une liaison de conception telle que nous puissions, par exemple, afficher le bon thème. vous pouvez le changer à tout moment, tout comme vous pouvez changer notre Listview et nos liaisons de fragments, etc.

(Voici le changeset complet qui contient plus de détails sur this )

Et oui, le lien Nikolay mentionné ci-dessus montre comment le nouveau sélecteur de configuration se présente et fonctionne

Une dernière chose: l'espace de noms "tools" est spécial. L'outil de packaging Android sait l'ignorer. Par conséquent, aucun de ces attributs ne sera empaqueté dans l'APK. Nous l'utilisons pour des métadonnées supplémentaires dans la mise en page. C'est également à cet endroit que, par exemple, les attributs permettant de supprimer les avertissements de peluches sont stockés - en tant qu'outils: ignorer.

371
Tor Norbye

Selon le Android Tools Project Site :

outils: contexte

Cet attribut est généralement défini sur l'élément racine dans un fichier XML de présentation et enregistre l'activité à laquelle la présentation est associée (au moment de la conception, car une présentation peut évidemment être utilisée par plusieurs présentations). Ceci sera par exemple utilisé par l'éditeur de disposition pour deviner un thème par défaut, car les thèmes sont définis dans le manifeste et sont associés à des activités et non à des présentations. Vous pouvez utiliser le même préfixe de point que dans les manifestes pour spécifier simplement la classe d'activité sans le nom complet du package d'application 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: Editeurs de mise en page dans Studio & Eclipse, Lint

88
anothercoder

1. Description

tools: context = "activity name" il ne sera pas empaqueté dans le apk .Only ADT Editeur de mise en page dans votre fichier de mise en forme actuel définissant le contexte de rendu correspondant, affichez votre mise en page actuelle dans le contexte où le nom de l'activité correspond Pour l’activité, si l’activité dans le fichier manifest définit un thème, alors ADT Editeur de mise en page rendra votre mise en page actuelle en fonction du thème. Cela signifie que si vous définissez la variable MainActivity Thème. La Lumière (l’autre), vous voyez alors dans le gestionnaire de disposition visuelle un contrôle en arrière-plan de ce que 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 comprendront, certaines personnes voient aussi ne sais pas, je vais ajouter quelques mots d'explication:

2. exemple

Prenez un simple tools:text, par exemple, une image de plus, pratique pour mieux comprendre 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

TextView1 a adopté le Android: text, et utilise le tools:text dans le TextView2, à droite de l'éditeur de mise en page affiche le sample name1, le sample name2 Deux polices si, après avoir exécuté le code à compiler, généré apk, le terminal n'affiche que le sample name1, ne montre pas le sample name2 les mots. Vous pouvez essayer de courir, voir comment l'effet.

3. Description spécifique

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

2.Only ADT Editeur de mise en page (c'est-à-dire, pour l'icône ci-dessus sur le côté droit du simulateur) dans le fichier de mise en forme actuel défini le contexte de rendu correspondant, la mise en page du XML actuel dans le contexte où le nom de l'activité correspond pour l'activité, si l'activité dans le fichier manifeste définit un thème, alors ADT Editeur de rendu rendra votre présentation actuelle selon le thème. Cela signifie que si vous définissez le paramètre MainActivity, définissez un thème. La lumière peut aussi être (autre). (Comprenez: vous avez ajouté tools: context = "activity name", la disposition XML rend l'activité spécifiée, établit un thème dans le fichier manifeste, comme illustré ci-dessus. Simulateur à droite Le style de thème suivra également les modifications correspondant au thème. .)

4.sommaire

Pour résumer, ces propriétés visaient principalement au-dessus des bons outils, le statut d'affichage du temps de débogage du simulateur et la compilation ne fonctionnaient pas,

10
KeLiuyue

“Tools: context” est l'un des attributs de conception pouvant faciliter la création de mises en page au format XML dans la structure de développement. Cet attribut est utilisé pour montrer au framework de développement quelle classe d'activité est choisie pour l'implémentation de la présentation. Utilisation de “tools: context”, 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, consultez la présente critique: http://cases.azoft.com/4-must -know-tools-for-effective-Android-development /

7
Mihir Patel

C'est la meilleure solution: https://developer.Android.com/studio/write/tool-attributes

Ce sont des attributs de conception que nous pouvons définir comme contexte

tools:context=".activity.ActivityName"

Adaptateur:

tools:context="com.PackegaName.AdapterName"

enter image description here

Vous pouvez accéder à la classe Java lorsque vous cliquez sur l'icône marquée. Les outils ont davantage de fonctionnalités telles que

tools:text=""
tools:visibility:""
tools:listItems=""//for recycler view 

etx

1
Ashik Azeez

tools:context=".MainActivity" thisline est utilisé dans un 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 particuliers.

0