xml - Cosa significa "strumenti:contesto" nei file di layout Android?




android-layout android-context android-tools-namespace (6)

Questo attributo è fondamentalmente la persistenza per la selezione "Attività associata" sopra il layout. In fase di esecuzione, un layout è sempre associato a un'attività. Naturalmente può essere associato a più di uno, ma almeno a uno. Nello strumento, è necessario conoscere questa mappatura (che in fase di esecuzione avviene nell'altra direzione, un'attività può chiamare setContentView (layout) per visualizzare un layout) al fine di pilotare determinate funzionalità.

In questo momento, lo stiamo usando solo per una cosa: Scegliere il tema giusto da mostrare per un layout (poiché il file manifest può registrare i temi da utilizzare per un'attività , e una volta che conosciamo l'attività associata al layout, possiamo scegliere il tema giusto da mostrare per il layout). In futuro, lo utilizzeremo per potenziare funzionalità aggiuntive, come il rendering della barra delle azioni (che è associata all'attività), una posizione per aggiungere gestori onClick, ecc.

Il motivo per cui questo è uno strumento: l'attributo namespace è che questa è solo una mappatura di design per l'utilizzo da parte dello strumento. Il layout stesso può essere utilizzato da più attività / frammenti, ecc. Vogliamo solo darti un modo per scegliere un binding di design in modo tale che possiamo ad esempio mostrare il tema giusto; puoi cambiarlo in qualsiasi momento, proprio come puoi cambiare il nostro listview e frammentare binding, ecc.

(Ecco il changeset completo che ha maggiori dettagli su this )

E sì, here Nikolay elencato sopra mostra come il nuovo selettore di configurazione sembra e funziona

Un'altra cosa: il namespace "tools" è speciale. Lo strumento di packaging Android sa di ignorarlo, quindi nessuno di questi attributi verrà inserito nell'APK. Lo stiamo utilizzando per ulteriori metadati nel layout. È anche il caso in cui, ad esempio, vengono memorizzati gli attributi per sopprimere gli avvertimenti sui pelucchi - come strumenti: ignorare.

A partire da una nuova versione recente di ADT, ho notato questo nuovo attributo nei file XML di layout, ad esempio:

<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 cosa servono "strumenti: contesto"?

Come fa a sapere il percorso esatto per l'attività che è scritta lì? Guarda il pacchetto dell'app, all'interno del manifest?

È limitato alle classi che estendono il contesto o solo le attività? È utilizzabile per oggetti ListView, ecc.?


Secondo il tools.android.com/tech-docs/tools-attributes :

Strumenti: contesto

Questo attributo è tipicamente impostato sull'elemento root in un file XML di layout e registra a quale attività è associato il layout (in fase di progettazione, poiché ovviamente un layout può essere utilizzato da più di un layout). Questo sarà ad esempio utilizzato dall'editor di layout per indovinare un tema predefinito, poiché i temi sono definiti nel manifesto e sono associati alle attività, non ai layout. È possibile utilizzare lo stesso prefisso di puntino del manifest per specificare semplicemente la classe di attività senza il nome completo del pacchetto dell'applicazione come prefisso.

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

Utilizzato da: Editor di layout in Studio & Eclipse, Lint


1.Description

tools: context = "activity name" non sarà pacchettizzato nell'apk. Solo l'editor di layout ADT nel file di layout corrente imposta il corrispondente contesto di rendering, mostra il tuo layout corrente nel rendering del contesto il nome dell'attività corrisponde all'attività, se l'attività nel file manifest imposta un tema, quindi ADT Layout Editor eseguirà il rendering del layout corrente in base al tema. Se si imposta MainActivity impostare un tema. The Light (l'altro), poi vedi in visual layout manager o controllo in background di ciò che dovrebbe essere il tema. La luce sembra. Solo per mostrare ciò che vedi è ciò che ottieni risultati.

Alcune persone vedono ne capiranno alcune, alcune persone vedono anche le non so, aggiungerò alcune parole di spiegazione:

2.Sample

Prendi un semplice tools:text , per esempio, un po 'più di immagine, comodo per capire meglio gli 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" />

TextView 1 ha adottato l' android: text e usa gli tools:text in TextView 2, sul lato destro dell'editor Layout verrà visualizzato il sample name1 , il nome di sample name2 2 due caratteri, se dopo aver eseguito il codice per compilare, generato apk , terminale visualizza solo il sample name1 del sample name1 , non mostra il nome del sample name2 le parole. Puoi provare a correre, vedere come l'effetto.

3. Descrizione specifica

1. Gli tools: context = "activity name" non sarà pacchettizzato apk (comprensione: l'equivalente di questo è commentato, il compilato non ha alcun effetto).

2.Solo ADT Layout Editor (cioè, per l'icona sopra a destra del simulatore) nel file di layout corrente imposta il corrispondente contesto di rendering, il Layout dell'XML corrente nel rendering del contesto è il nome dell'attività corrispondente all'attività, se l'attività nel file manifest imposta un tema, l'Editor di layout ADT renderà il layout corrente in base al tema. Se si imposta MainActivity impostare un tema. La Luce può anche essere (altro). (Capire: hai aggiunto tools: context = "activity name" , il layout XML sta mostrando l'attività specificata, stabilisce un tema nel file manifest, raffigurato sopra il simulatore di destra. al tema.)

4.summary

Per riassumere, queste proprietà puntano principalmente su strumenti giusti, lo stato di visualizzazione del tempo di debug del simulatore e la compilazione non funziona,


tools:context=".MainActivity" thisline è usato nel file xml che indica quale file java source è usato per accedere a questo file xml. significa mostrare questa anteprima xml per i file java perticulari.


Questa è probabilmente l'attività che l'editor dell'interfaccia utente degli strumenti usa per rendere il layout (troverà il tema giusto in base all'attività). Questo è documentato here (intorno al centro dell'articolo, iscriviti a quella pagina per tenerti aggiornato).


Android supporta i file OTF per i caratteri tipografici, se stai affrontando questo problema, assicurati di impostare il percorso corretto per il carattere, ad esempio, se hai il nome font.otf del file, inseriscilo in un carattere di cartella all'interno delle risorse cartella e creare il carattere tipografico come segue:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/fontname.otf");

(l'argomento path non dovrebbe iniziare con "/") e il nome del file non dovrebbe includere caratteri speciali o un "-" e dovrebbe essere in lettere minuscole





android xml android-layout android-context android-tools-namespace