Wat is “tools:context” in Android-lay-outbestanden?

Vanaf een recente nieuwe versie van ADT, heb ik dit nieuwe attribuut opgemerkt in de lay-out XML-bestanden, bijvoorbeeld:

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

Waar wordt “tools:context” voor gebruikt?

Hoe weet het zelfs het exacte pad naar de activiteit die daar is geschreven? Kijkt het naar het pakket van de app, in het manifest?

Is het beperkt tot lessen die Context uitbreiden of alleen activiteiten? Is het bruikbaar voor ListView-items enz.?


Antwoord 1, autoriteit 100%

Dit is de activiteit die de tools UI-editor gebruikt om uw lay-outvoorbeeld weer te geven. Het is hiergedocumenteerd:

Dit kenmerk geeft aan aan welke activiteit deze lay-out standaard is gekoppeld. Dit maakt functies in de editor of het lay-outvoorbeeld mogelijk waarvoor kennis van de activiteit vereist is, zoals wat het lay-outthema in het voorbeeld moet zijn en waar u onClick-handlers kunt invoegen wanneer u die van een quickfix maakt


Antwoord 2, autoriteit 82%

Dat kenmerk is in feite de persistentie voor de selectie ‘Geassocieerde activiteit’ boven de lay-out. Tijdens runtime is een lay-out altijd gekoppeld aan een activiteit. Het kan natuurlijk worden geassocieerd met meer dan één, maar ten minste één. In de tool moeten we weten over deze mapping (die tijdens runtime in de andere richting gebeurt; een activiteit kan setContentView(layout) aanroepen om een lay-out weer te geven) om bepaalde functies aan te sturen.

Op dit moment gebruiken we het maar voor één ding: het kiezen van het juiste thema om te tonen voor een lay-out (aangezien het manifestbestand thema’s kan registreren om te gebruiken voor een activiteit, en zodra we weten de activiteit die aan de lay-out is gekoppeld, kunnen we het juiste thema kiezen om voor de lay-out te tonen). In de toekomst zullen we dit gebruiken om extra functies aan te sturen, zoals het weergeven van de actiebalk (die aan de activiteit is gekoppeld), een plaats om onClick-handlers toe te voegen, enz.

De reden dat dit een tool: namespace-attribuut is, is dat dit slechts een ontwerptijdtoewijzing is voor gebruik door de tool. De layout zelf kan gebruikt worden door meerdere activiteiten/fragmenten etc. We willen je alleen een manier geven om een designtime binding te kiezen zodat we bijvoorbeeld het juiste thema kunnen laten zien; je kunt het op elk moment wijzigen, net zoals je onze lijstweergave en fragmentbindingen, enz. kunt wijzigen.

(Hier is de volledige wijzigingenset met meer details over dit)

En ja, de linkdie Nikolay hierboven vermeldt, laat zien hoe de nieuwe configuratiekiezer eruitziet en werkt

Nog één ding: de naamruimte “tools” is speciaal. De Android-verpakkingstool weet het te negeren, dus geen van die kenmerken wordt in de APK verpakt. We gebruiken het voor extra metadata in de lay-out. Het is ook waar bijvoorbeeld de attributen om lintwaarschuwingen te onderdrukken worden opgeslagen — als tools:ignore.


Antwoord 3, autoriteit 20%

Volgens de Android Tools-projectsite:

tools:context

Dit attribuut wordt meestal ingesteld op het root-element in een lay-out-XML-bestand en legt vast met welke activiteit de lay-out is geassocieerd (tijdens het ontwerp, aangezien een lay-out natuurlijk door meer dan één lay-out kan worden gebruikt). Dit zal bijvoorbeeld door de lay-outeditor worden gebruikt om een standaardthema te raden, aangezien thema’s zijn gedefinieerd in het manifest en zijn gekoppeld aan activiteiten, niet aan lay-outs. U kunt hetzelfde puntvoorvoegsel gebruiken als in manifesten om alleen de activiteitsklasse op te geven zonder de volledige naam van het toepassingspakket als voorvoegsel.

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

Gebruikt door: Lay-outeditors in Studio & Verduistering, Lint


Antwoord 4, autoriteit 3%

1.Beschrijving

tools: context = "activity name"het wordt niet in de apkverpakt. Alleen ADTLay-outeditor in uw huidige lay-out bestand stel overeenkomstige weergavecontext in, toon uw huidige lay-out in weergave de context is de naam van de activiteit komt overeen met de activiteit, als de activiteit in het manifest-bestand een thema instelt, dan ADTLay-outeditor zal uw huidige lay-out weergeven volgens het thema. Dit betekent dat als u de MainActivityinstelt, een thema instelt. The Light (de andere), dan zie je in Visual Layout Manager o achtergrondcontrole van wat het Thema zou moeten zijn. Het licht ziet eruit. Alleen om u te laten zien wat u ziet, krijgt u resultaten.

Sommige mensen zien zullen sommigen begrijpen, sommigen zien dat ze ook niet weten, ik zal een paar woorden ter toelichting toevoegen:

2.Voorbeeld

Neem een eenvoudige tools:text, bijvoorbeeld wat meer afbeelding, handig om de tools:context

beter te begrijpen

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

voer hier de afbeeldingsbeschrijving in

TextView1 heeft de android: textovergenomen en gebruikt de tools:textin de TextView2, aan de rechterkant van de lay-outeditor wordt het sample name1weergegeven, het lettertype sample name2twee, als nadat u de code hebt uitgevoerd om te compileren, apk, terminal geeft alleen de sample name1weer, toont niet de sample name2de woorden. Je kunt proberen te rennen, kijk hoe het effect heeft.

3.Specifieke beschrijving

1.De tools: context = "activity name"het zal niet worden verpakt in de apk(begrijpend: het equivalent hiervan wordt becommentarieerd, het gecompileerde nee effect.)

2.Alleen ADTLayout Editor (dwz voor het bovenstaande pictogram aan de rechterkant van de simulator) in het huidige Layout-bestand stelt de bijbehorende rendercontext in, de Layout van de huidige XML bij het renderen van de context is de naam van de activiteit komt overeen met de activiteit, als de activiteit in het manifestbestand een thema instelt, dan zal de lay-outeditor ADTuw huidige lay-out weergeven volgens het thema. Dit betekent dat als u de MainActivitystel een thema in. Het Licht kan ook (anders) zijn. (begrijp: je hebt tools: context = "activity name", de XML-lay-out geeft gespecificeerde activiteit weer, stelt een thema vast in het manifestbestand, afgebeeld rechtsboven simulator De themastijl volgt ook de wijzigingen die overeenkomen met het thema.)

4.samenvatting

Samenvattend, deze eigenschappen waren voornamelijk gericht op de juiste tools, de simulator debugging tijdweergavestatus en compileren werkt niet,


Antwoord 5

“tools:context” is een van de ontwerpkenmerken die het maken van lay-outs in XML in het ontwikkelingsraamwerk kan vergemakkelijken. Dit attribuut wordt gebruikt om het ontwikkelingsraamwerk te laten zien welke activiteitsklasse is gekozen voor het implementeren van de lay-out. Met behulp van “tools:context” kiest Android Studio automatisch het benodigde thema voor de preview.

Als je meer wilt weten over enkele andere kenmerken en handige tools voor de ontwikkeling van Android-apps, bekijk dan deze recensie: http://cases.azoft.com/4-must-know-tools-for-effectieve-android-development/


Antwoord 6

Dit is de beste oplossing:
https://developer.android.com/studio/write/tool-attributes

Dit zijn ontwerpkenmerken
we kunnen de activiteitscontext in xml instellen zoals

tools:context=".activity.ActivityName"

Adapter:

tools:context="com.PackegaName.AdapterName"

voer hier de afbeeldingsbeschrijving in

U kunt naar Java-klasse navigeren door op het gemarkeerde pictogram te klikken
en tools hebben meer functies zoals

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

etx


Antwoord 7

tools:context=".MainActivity"
deze regel wordt gebruikt in xml-bestanden die aangeven welk java-bronbestand wordt gebruikt om toegang te krijgen tot dit xml-bestand.
het betekent dit xml-voorbeeld tonen voor perticulaire java-bestanden.


Antwoord 8

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    //more views
</androidx.constraintlayout.widget.ConstraintLayout>

In de bovenstaande code is de basisbehoefte van tools:context om te vertellen aan welke activiteit of welk fragment het lay-outbestand standaard is gekoppeld. U kunt dus de naam van de activiteitsklasse specificeren met hetzelfde puntvoorvoegsel als gebruikt in het manifestbestand.

Hierdoor kiest Android Studio automatisch het benodigde thema voor de preview en hoeft u de preview-instellingen niet handmatig uit te voeren. Zoals we allemaal weten, kan een lay-outbestand aan verschillende activiteiten worden gekoppeld, maar de thema’s worden gedefinieerd in het manifestbestand en deze thema’s worden gekoppeld aan uw activiteit. Dus door tools:context toe te voegen aan uw lay-outbestand, kiest het Android Studio-voorbeeld automatisch het benodigde thema voor u.


Antwoord 9

Dit kenmerk helpt om de beste kennis te krijgen van de activiteit die aan uw lay-out is gekoppeld. Dit is ook handig wanneer u onClick-handlers moet toevoegen aan een weergave met QuickFix.

tools:context=".MainActivity"

Other episodes