2015-09-06 8 views
6

Creazione di vista personalizzata basata su LinearLayout. Classe estende la classe LinearLayout, nel layout ho:Android Studio mostra un avviso: Unione elementi non consentita qui

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <merge> 
     some staff here 
    </merge> 
</layout> 

Android Studio mostra la l'avvertimento Element merge is not allowed here, ma funziona l'applicazione.

Cosa c'è che non va?

+0

Mi pare di capire, usare come tag principale. è un tag per tutti i dati di layout, non solo per il layout stesso. Guarda qui: https://developer.android.com/tools/data-binding/guide.html#writing_expressions – tse

+0

Non penso che sia la soluzione. Se faccio il '' tag la radice e metto '' al suo interno, ricevo un avvertimento che il layout non è permesso lì e si rifiuta di compilare. Almeno compila quando '' è la radice. –

risposta

-3

Marca <merge> essere il primo tag nel file.

+3

Non posso. Se lo faccio, il file di bindind non verrà generato. – tse

-1

In realtà non è necessario unire qui poiché si ha il layout in root per databisnig. <unione> tag qui è ridondante!

Use the <merge> Tag

The tag helps eliminate redundant view groups in your view hierarchy when including one layout within another

Da: Android documentation

layout merge suole trarre e sistema li ignora durante il disegno.

Per approvare che ho eseguito il tracciamento dei layout per Gerarchia Visualizza in Monitor dispositivo Android per il layout .. non esiste, il che significa che fa lo stesso lavoro del tag di unione. puoi controllarlo da solo!

speranza che possa aiutare ..

+0

Ho appena provato questo e ho ricevuto questo errore '' 'Errore: sono permessi solo un elemento di layout e un elemento di dati. /Users/davethomas/dev*****t.xml ha 3''' Non puoi avere più di un elemento in un layout ad eccezione dell'elemento dati. –

+0

questo è vero. è necessario impostare tutto il contenuto sotto un unico layout. sotto Layout –

1

io credo che sia solo un problema tecnico in studio Android. Anche la documentazione ufficiale ha merge come un figlio diretto di layout: https://developer.android.com/topic/libraries/data-binding/index.html

Edit: Ho presentato un bug c'è: https://code.google.com/p/android/issues/detail?id=286406&thanks=286406&ts=1490873944

+0

si dice che __it non è supportato – Shujito

+1

@Shujito puoi condividere la tua fonte? la documentazione dice: 'L'associazione dati non supporta l'inclusione come figlio diretto di un elemento unione. Ciò significa che non può essere figlio di . Non dice nulla di essendo un figlio di . Mi manca qualcosa? Si prega di precisare. – mbonnin

+0

Hai provato? – Shujito