1029 Stimmen

Was bedeutet "tools:context" in Android-Layoutdateien?

Seit einer neuen Version von ADT habe ich zum Beispiel dieses neue Attribut in den Layout-XML-Dateien entdeckt:

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

Wofür wird "tools:context" verwendet?

Woher weiß es überhaupt den genauen Pfad zu der Aktivität, die dort geschrieben steht? Sieht es sich das Paket der App im Manifest an?

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

505voto

Nikolay Elenkov Punkte 52201

Dies ist die Aktivität, die der UI-Editor von tools verwendet, um Ihre Layout-Vorschau zu rendern. Sie ist dokumentiert aquí :

Dieses Attribut gibt an, mit welcher Aktivität dieses Layout standardmäßig verknüpft ist. Dies ermöglicht Funktionen im Editor oder in der Layoutvorschau, die die Kenntnis der Aktivität erfordern, z. B. welches Layoutthema in der Vorschau angezeigt werden soll und wo onClick-Handler eingefügt werden sollen, wenn Sie diese aus einem Quickfix erstellen

395voto

Tor Norbye Punkte 9032

Dieses Attribut ist im Grunde die Persistenz für die Auswahl "Zugehörige Aktivität" oberhalb des Layouts. Zur Laufzeit ist ein Layout immer mit einer Aktivität verbunden. Es kann natürlich mit mehr als einer verbunden sein, aber mit mindestens einer. Im Tool müssen wir über diese Zuordnung Bescheid wissen (die zur Laufzeit in die andere Richtung erfolgt; eine Aktivität kann setContentView(layout) aufrufen, um ein Layout anzuzeigen), um bestimmte Funktionen zu steuern.

Im Moment benutzen wir es nur für eine Sache: Die Auswahl des richtigen Themas, das für ein Layout angezeigt werden soll (da die Manifestdatei Themen registrieren kann, die für ein Layout verwendet werden sollen). Tätigkeit und sobald wir die mit dem Layout verbundene Aktivität kennen, können wir das richtige Thema für das Layout auswählen). In Zukunft werden wir dies nutzen, um zusätzliche Funktionen zu steuern - wie das Rendern der Aktionsleiste (die mit der Aktivität verknüpft ist), einen Ort, um onClick-Handler hinzuzufügen, usw.

Der Grund dafür, dass es sich um ein tools: Namespace-Attribut handelt, ist, dass es sich nur um eine Zuordnung zur Entwurfszeit handelt, die vom Werkzeug verwendet wird. Das Layout selbst kann von mehreren Aktivitäten/Fragmenten usw. verwendet werden. Wir möchten Ihnen lediglich die Möglichkeit geben, eine Designtime-Bindung auszuwählen, so dass wir beispielsweise das richtige Thema anzeigen können; Sie können es jederzeit ändern, genauso wie Sie unsere Listview- und Fragment-Bindungen usw. ändern können.

(Hier ist der vollständige Änderungssatz mit weiteren Details zu diese )

Und ja, die Verbindung Nikolay zeigt oben, wie die neue Konfigurationsauswahl aussieht und funktioniert

Und noch etwas: Der Namensraum "tools" ist etwas Besonderes. Das Android-Paketierungstool weiß, dass es ihn ignoriert, sodass keines dieser Attribute in die APK gepackt wird. Wir verwenden ihn für zusätzliche Metadaten im Layout. Dort werden zum Beispiel auch die Attribute zur Unterdrückung von Lint-Warnungen gespeichert - als tools:ignore.

97voto

anothercoder Punkte 1449

Nach Angaben der Android Tools Projektseite :

tools:context

Dieses Attribut wird in der Regel auf das Root-Element in einer Layout-XML-Datei gesetzt und zeichnet auf, mit welcher Aktivität das Layout verbunden ist (zur Entwurfszeit, da ein Layout natürlich von mehr als einem Layout verwendet werden kann). Dies wird z. B. vom Layout-Editor verwendet, um ein Standardthema zu erraten, da Themen im Manifest definiert werden und mit Aktivitäten, nicht mit Layouts, verknüpft sind. Sie können den gleichen Punkt-Prä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

15voto

KeLiuyue Punkte 7831

1.Beschreibung

tools: context = "activity name" wird es nicht in das Paket apk .nur ADT Layout-Editor in Ihrer aktuellen Layout-Datei entsprechenden Rendering-Kontext setzen, zeigen Sie Ihr aktuelles Layout in der Wiedergabe der Kontext ist der Aktivitätsname entspricht der Aktivität, wenn die Aktivität in der manifest Datei ein Thema setzen, dann ADT Der Layout-Editor rendert Ihr aktuelles Layout entsprechend des Themas, d.h. wenn Sie die Option MainActivity ein Thema festlegen. Das Licht (das andere), dann sehen Sie in der visuellen Layout-Manager o Hintergrund-Steuerung von dem, was sollte das Thema sein. Nur um Ihnen zu zeigen, was Sie sehen, ist, was Sie Ergebnisse erhalten.

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

2.Probe

Nehmen Sie eine einfache tools:text zum Beispiel ein weiteres Bild, das zum besseren Verständnis der 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 hat die android: text und verwenden Sie die tools:text im TextView 2, auf der rechten Seite des Layout-Editors wird die sample name1 die sample name2 zwei Schriftarten, wenn Sie nach dem Ausführen des Codes zu kompilieren, generiert apk , zeigt das Terminal nur die sample name1 zeigt nicht die sample name2 die Worte. Sie können versuchen, zu laufen, sehen, wie die Wirkung.

3. spezifische Beschreibung

1. die tools: context = "activity name" wird es nicht in das Paket apk (zum Verständnis: das Äquivalent dazu ist kommentiert, das Kompilierte ohne Wirkung).

2.nur ADT Layout-Editor (dh für die oben genannten Symbol auf der rechten Seite des Simulators) in der aktuellen Layout-Datei gesetzt entsprechenden Rendering-Kontext, das Layout der aktuellen XML in Rendering-Kontext ist die Aktivität Name entspricht der Aktivität, wenn die Aktivität in der Manifest-Datei ein Thema, dann ADT Der Layout-Editor rendert Ihr aktuelles Layout entsprechend des Themas, d.h. wenn Sie die Option MainActivity ein Thema festlegen. Das Licht kann auch (andere) sein.(verstehen: Sie hinzugefügt tools: context = "activity name" Das XML-Layout rendert die angegebene Aktivität, legt ein Thema in der Manifestdatei fest, und der oben rechts abgebildete Simulator-Theme-Stil folgt ebenfalls den dem Thema entsprechenden Änderungen).

4.Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese Eigenschaften vor allem über die richtigen Werkzeuge, die Simulator-Debugging-Zeit-Anzeige-Status, und kompilieren nicht funktioniert,

7voto

Mihir Patel Punkte 404

"tools:context" ist eines der Design-Attribute, das die Layouterstellung in XML im Entwicklungsframework erleichtern kann. Dieses Attribut wird verwendet, um dem Entwicklungsframework zu zeigen, welche Aktivitätsklasse für die Implementierung des Layouts ausgewählt wurde. Mit "tools:context" wählt Android Studio automatisch das notwendige Theme für die Vorschau aus.

Wenn Sie mehr über andere Eigenschaften und nützliche Tools für die Entwicklung von Android-Apps erfahren möchten, lesen Sie diesen Bericht: http://cases.azoft.com/4-must-know-tools-for-effective-Android-development/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X