Frage Was ist "Werkzeuge: Kontext" in Android-Layoutdateien?


Beginnend mit einer neuen Version von ADT habe ich dieses neue Attribut in den XML-Layout-Dateien bemerkt, zum Beispiel:

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

Wozu wird "Werkzeuge: Kontext" verwendet?

Woher weiß es genau den Pfad zu der Aktivität, die dort geschrieben ist? Sieht es das Paket der App im Manifest an?

Ist es auf Klassen beschränkt, die den Kontext oder nur Aktivitäten erweitern? Ist es für ListView-Elemente usw. verwendbar?


821
2018-06-18 07:25


Ursprung


Antworten:


Dies ist wahrscheinlich die Aktivität, die der UI-Editor des Tools verwendet, um Ihr Layout zu rendern (es wird das richtige Thema basierend auf der Aktivität finden). Dies ist dokumentiert Hier (ungefähr in der Mitte des Artikels; abonnieren Sie diese Seite, um auf dem neuesten Stand zu bleiben).


374
2018-06-18 07:56



Dieses Attribut ist im Grunde die Persistenz für die Auswahl "Zugehörige Aktivität" über dem Layout. Zur Laufzeit ist ein Layout immer einer Aktivität zugeordnet. Es kann natürlich mit mehr als einem, aber mindestens einem verbunden sein. Im Werkzeug müssen wir über dieses Mapping Bescheid wissen (was zur Laufzeit in die andere Richtung geschieht; eine Aktivität kann setContentView (Layout) aufrufen, um ein Layout anzuzeigen), um bestimmte Features zu steuern.

Im Moment verwenden wir es nur für eine Sache: Auswählen des richtigen Themas, das für ein Layout angezeigt werden soll (da die Manifestdatei Themen für die Verwendung in einem Layout registrieren kann) AktivitätSobald wir die mit dem Layout verknüpfte Aktivität kennen, können wir das richtige Thema für das Layout auswählen. In Zukunft werden wir damit zusätzliche Funktionen steuern, beispielsweise das Rendern der Aktionsleiste (die mit der Aktivität verknüpft ist), einen Platz zum Hinzufügen von onClick-Handlern usw.

Der Grund hierfür ist, dass es sich bei dem Namespace-Attribut "Werkzeuge:" nur um eine Entwurfszeit-Zuordnung für das Werkzeug handelt. Das Layout selbst kann von mehreren Aktivitäten / Fragmenten usw. verwendet werden. Wir möchten Ihnen nur eine Möglichkeit geben, eine Designzeitbindung auszuwählen, so dass wir zum Beispiel das richtige Thema zeigen können; Sie können es jederzeit ändern, genauso wie Sie unsere Listenansicht und Fragmentbindungen ändern können usw.

(Hier ist der vollständige Changeset, der mehr Details zu hat Dies)

Und ja, der Link Der oben aufgeführte Nikolay zeigt, wie der neue Konfigurationswähler aussieht und funktioniert

Noch eine Sache: Der Namespace "Tools" ist etwas Besonderes. Das Android-Paketingtool weiß, dass es ignoriert wird, sodass keines dieser Attribute in das APK gepackt wird. Wir verwenden es für zusätzliche Metadaten im Layout. Hier werden beispielsweise auch die Attribute zur Unterdrückung von Fusselwarnungen gespeichert - als Werkzeuge: ignore.


352
2018-06-19 23:33



Entsprechend der Android Tools-Projektseite:

Werkzeuge: Kontext 

Dieses Attribut wird normalerweise für das Wurzelelement in einer Layout-XML-Datei festgelegt und zeichnet auf, zu welcher Aktivität das Layout gehört (zur Entwurfszeit, da ein Layout natürlich von mehr als einem Layout verwendet werden kann). Dies wird beispielsweise vom Layout-Editor verwendet, um ein Standardthema zu erraten, da Themen im Manifest definiert sind und Aktivitäten zugeordnet sind, nicht Layouts. Sie können das gleiche Punktpräfix wie in Manifesten verwenden, um nur die Aktivitätsklasse ohne den vollständigen Anwendungspaketnamen als Präfix anzugeben.

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

Verwendet von: Layout-Editoren in Studio & Eclipse, Lint


84
2018-02-20 16:16



"Tools: context" ist eines der Designattribute, das die Layout-Erstellung in XML im Entwicklungsframework erleichtern kann. Dieses Attribut wird verwendet, um dem Entwicklungsframework anzuzeigen, welche Aktivitätsklasse für die Implementierung des Layouts ausgewählt wurde. Mit "tools: context" wählt Android Studio das für die Vorschau benötigte Thema automatisch aus.

Wenn Sie mehr über andere Attribute und nützliche Tools für die Entwicklung von Android-Apps erfahren möchten, werfen Sie einen Blick auf diese Rezension: http://cases.azoft.com/4-must-know-tools-for-effective-android-development/


5
2017-07-13 11:08



1. Beschreibung

tools: context = "activity name" es wird nicht in die verpackt werden apk .Nur ADT Layout-Editor in Ihrer aktuellen Layout-Datei setzen entsprechenden Rendering-Kontext, zeigen Sie Ihr aktuelles Layout in Rendering der Kontext ist der Aktivität Name entspricht der Aktivität, wenn die Aktivität in der manifest Datei ein Thema festlegen, dann ADT Der Layout-Editor wird Ihr aktuelles Layout nach dem Theme.Means rendern, wenn Sie den MainActivity Setze ein Thema. Das Licht (das andere), dann siehst du im visuellen Layout Manager eine Hintergrundkontrolle über was das Thema sein soll. Das Licht sieht so aus. Nur um Ihnen zu zeigen, was Sie sehen, bekommen Sie Ergebnisse.

Einige Leute sehen werden einige verstehen, manche Leute sehen die auch nicht wissen, ich werde ein paar Worte der Erklärung hinzufügen:

2. Beispiel

Nimm ein einfaches tools:textzum Beispiel einige mehr Bild, bequem zu verstehen, die 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 nahm die android: textund benutze die tools:text in dem TextView2, auf der rechten Seite des Layout - Editors wird angezeigt sample name1, das sample name2 zwei Font, wenn nach dem Ausführen des Codes zu kompilieren, generiert apk, Terminalanzeige nur die sample name1, zeigt nicht die sample name2 die Wörter. Sie können versuchen zu laufen, sehen Sie, wie der Effekt.

3. spezifische Beschreibung

1.Die tools: context = "activity name" es wird nicht in die verpackt werden apk(Verständnis: Das Äquivalent dazu ist kommentiert, der kompilierte kein Effekt.)

2.Nur ADT Layout-Editor (dh für das obige Symbol auf der rechten Seite des Simulators) in der aktuellen Layout-Datei den entsprechenden Rendering-Kontext, das Layout des aktuellen XML in Rendering der Kontext ist der Name der Aktivität entspricht der Aktivität, wenn die Aktivität in Die Manifest-Datei legt dann ein Theme fest ADT Der Layout-Editor wird Ihr aktuelles Layout nach dem Theme.Means rendern, wenn Sie den MainActivity Setze ein Thema. Das Licht kann auch (anders) sein (verstehen: du hast hinzugefügt tools: context = "activity name", das XML-Layout gibt die angegebene Aktivität wieder, richtet ein Theme in der Manifest-Datei ein, siehe oben rechts Der Themenstil wird auch den Änderungen entsprechen, die dem Theme entsprechen.)

4. Zusammenfassung

Zusammengefasst zielen diese Eigenschaften hauptsächlich auf über die richtigen Werkzeuge, der Simulator-Debugging-Zeitanzeige-Status und das Kompilieren funktioniert nicht.


4
2017-10-15 03:57



tools:context=".MainActivity" Diese Zeile wird in der XML-Datei verwendet, die angibt, welche Java-Quellendatei für den Zugriff auf diese XML-Datei verwendet wird. Es bedeutet, dass diese XML-Vorschau für detaillierte Java-Dateien angezeigt wird.


1
2018-05-08 07:33