wake-up-neo.com

Was ist "tools: context" in Android Layoutdateien?

Beginnend mit einer neuen Version von ADT ist mir dieses neue Attribut in den Layout-XML-Dateien aufgefallen. 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" />

Wofür wird "tools: context" verwendet?

Woher kennt es überhaupt den genauen Pfad zu der Aktivität, die dort geschrieben steht? Betrachtet es das Paket der App im Manifest?

Beschränkt es sich auf Klassen, die den Kontext erweitern, oder nur auf Aktivitäten? Kann es für ListView-Objekte usw. verwendet werden?

898

Dies ist die Aktivität, die der Benutzeroberflächen-Editor für Tools zum Rendern der Layoutvorschau verwendet. Es ist dokumentiert hier :

Dieses Attribut gibt an, welcher Aktivität dieses Layout standardmäßig zugeordnet ist. Dadurch werden Funktionen im Editor oder in der Layoutvorschau aktiviert, die Kenntnisse über die Aktivität erfordern, z. B. das Layoutdesign in der Vorschau und die Position, an der OnClick-Handler eingefügt werden sollen, wenn Sie diese aus einem Quickfix erstellen

416
Nikolay Elenkov

Dieses Attribut ist im Grunde die Persistenz für die Auswahl "Assoziierte Aktivität" über dem Layout. Zur Laufzeit ist ein Layout immer mit einer Aktivität verknüpft. Es kann natürlich mehr als einer zugeordnet sein, aber mindestens einer. Im Tool 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 Funktionen zu steuern.

Im Moment verwenden wir es nur für eine Sache: Auswählen des richtigen Designs für ein Layout (da die Manifestdatei Designs registrieren kann, die für eine - Aktivität verwendet werden sollen, und einmal Wenn wir die mit dem Layout verbundenen Aktivitäten kennen, können wir das richtige Thema für das Layout auswählen. In Zukunft werden wir dies verwenden, um zusätzliche Funktionen zu steuern - z. B. das Rendern der Aktionsleiste (die der Aktivität zugeordnet ist), einen Ort zum Hinzufügen von onClick-Handlern usw.

Der Grund für das Attribut tools: namespace ist, dass dies nur eine Entwurfszeitzuordnung ist, die vom Tool verwendet wird. Das Layout selbst kann von mehreren Aktivitäten/Fragmenten usw. verwendet werden. Wir möchten Ihnen nur die Möglichkeit geben, eine Entwurfszeitbindung auszuwählen, damit wir beispielsweise das richtige Thema anzeigen können. Sie können es jederzeit ändern, genauso wie Sie unsere Listenansicht und Fragmentbindungen usw. ändern können.

(Hier ist der vollständige Änderungssatz, der weitere Details zu this enthält.)

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

Eins noch: Der Namespace "tools" ist etwas Besonderes. Das Paketierungstool Android kann dies ignorieren, sodass keines dieser Attribute in das APK gepackt wird. Wir verwenden es für zusätzliche Metadaten im Layout. Hier werden beispielsweise die Attribute zum Unterdrücken von Flusenwarnungen gespeichert - als Tools: Ignorieren.

371
Tor Norbye

Laut der Android Tools Project Site :

tools: context

Dieses Attribut wird normalerweise für das Stammelement in einer Layout-XML-Datei festgelegt und zeichnet auf, mit welcher Aktivität das Layout verknüpft ist (zum Zeitpunkt der Erstellung, da ein Layout offensichtlich von mehr als einem Layout verwendet werden kann). Dies wird zum Beispiel vom Layout-Editor verwendet, um ein Standardthema zu erraten, da die Themen im Manifest definiert sind und Aktivitäten und nicht Layouts zugeordnet sind. Sie können dasselbe 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

88
anothercoder

1. Beschreibung

tools: context = "activity name" Es wird nicht in den apk gepackt. Nur ADT Layout-Editor in Ihrer aktuellen Layout-Datei Entsprechenden Rendering-Kontext festlegen. Zeigen Sie Ihr aktuelles Layout beim Rendern an. Der Kontext entspricht dem Aktivitätsnamen Wenn für die Aktivität in der Datei manifest ein Thema festgelegt wurde, wird im Layout-Editor ADT das aktuelle Layout entsprechend dem Thema dargestellt. Wenn Sie MainActivity festlegen, wird a Thema. Das Licht (das andere), dann sehen Sie im visuellen Layout-Manager die Hintergrundsteuerung des Themas. Das Licht sieht aus wie. Nur um dir zu zeigen, was du siehst, bekommst du Ergebnisse.

Einige Leute sehen, werden einige verstehen, andere sehen, wissen es auch nicht, ich werde ein paar erklärende Worte hinzufügen:

2. Probe

Nehmen Sie einen einfachen tools:text, zum Beispiel ein weiteres Bild, um den tools:context besser zu verstehen.

<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 hat den Android: text übernommen und verwendet den tools:text im TextView2. Auf der rechten Seite des Layout-Editors wird der sample name1, der sample name2 angezeigt ] _ zwei Schriftart, wenn nach dem Ausführen des Codes zum Kompilieren, generiert apk, Terminal zeigt nur die sample name1, nicht die sample name2 die Wörter. Du kannst versuchen zu rennen, wie sich das auswirkt.

3. Spezifische beschreibung

1.Der tools: context = "activity name" wird nicht in den apk gepackt.

2.Nur ADT Layout-Editor (dh für das obige Symbol auf der rechten Seite des Simulators) in der aktuellen Layout-Datei wird der entsprechende Darstellungskontext festgelegt, dem das Layout der aktuellen XML beim Darstellen des Kontexts dem Aktivitätsnamen entspricht Wenn für die Aktivität in der Manifestdatei ein Thema festgelegt wurde, rendert der Layout-Editor ADT Ihr aktuelles Layout entsprechend dem Thema. Wenn Sie MainActivity festlegen, wird ein Thema festgelegt. Das Licht kann auch (anders) sein. (Verstehen Sie: Sie haben tools: context = "activity name" hinzugefügt, das XML-Layout gibt die angegebene Aktivität wieder, erstellt ein Design in der Manifestdatei, abgebildet über dem rechten Simulator. Der Designstil folgt auch den Änderungen, die dem Design entsprechen .)

4. Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese Eigenschaften hauptsächlich auf die richtigen Tools abzielen, den Status der Anzeige der Simulator-Debugging-Zeit und das Kompilieren nicht funktionieren.

10
KeLiuyue

„Tools: context“ ist eines der Designattribute, mit denen die Layouterstellung in XML im Entwicklungsframework vereinfacht werden kann. Mit diesem Attribut wird dem Entwicklungsframework angezeigt, welche Aktivitätsklasse für die Implementierung des Layouts ausgewählt wurde. Mit „tools: context“ wählt Android Studio automatisch das gewünschte Thema für die Vorschau.

Wenn Sie mehr über einige andere Attribute und nützliche Tools für die Android - App-Entwicklung erfahren möchten, schauen Sie sich diese Rezension an: http://cases.azoft.com/4-must -know-tools-for-effective-Android-development /

7
Mihir Patel

Dies ist die beste Lösung: https://developer.Android.com/studio/write/tool-attributes

Dies sind Designattribute, die wir wie Aktivitätskontext in XML setzen können

tools:context=".activity.ActivityName"

Adapter:

tools:context="com.PackegaName.AdapterName"

enter image description here

Sie können zur Klasse Java navigieren, indem Sie auf das markierte Symbol klicken, und Tools verfügen über weitere Funktionen wie

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

etx

1
Ashik Azeez

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

0