Verwenden eines nicht-androiden Namespacepräfixes in untergeordneten Elementen in einem Layout

8

Ich versuche, benutzerdefinierte Attribute in einigen Android-Layouts zu verwenden, aber ich erhalte einen Fehler (aus Eclipse), wenn ich versuche, ein anderes Namespace-Präfix als android: in einem untergeordneten Element zu verwenden. Beachten Sie, dass es funktioniert, wenn ich das Namespacepräfix custom: im Stamm- / Elternelement in der Datei verwende, nicht nur das untergeordnete Element.

Hier ist zum Beispiel ein einfaches Layout mit dem angegebenen benutzerdefinierten Namespace:

%Vor%

Der Fehler, den Eclipse gibt (nur beim zweiten Versuch, das Präfix custom: zu verwenden) ist:

  

Unerwartetes Namespacepräfix "benutzerdefiniert" gefunden für Tag ImageView.

Wenn ich meinem root-Element ein ImageView anstelle eines LinearLayout hinzufüge, wird das Präfix akzeptiert. Es scheint also nur ein Problem zu sein, das Namespacepräfix in einem Kindelement zu verwenden.

Wenn ich außerdem versuche, ein weiteres xmlns:custom="http://schemas.android.com/apk/res-auto" -Attribut zum ImageView hinzuzufügen, beschwert es sich ebenfalls.

Wenn es hilft, hier ist die attrs.xml Datei, die ich mit dem obigen verwende:

%Vor%

Ich habe online einige Sachen gesehen, die mich glauben machen lassen, was ich tun möchte. Zum Beispiel verwendet Qberticus in der akzeptierten Antwort hier das Präfix "whatever" in einer Kindklasse. Ähnlich in der Post hier .

Ich verstehe es nicht. Wird ein nicht-androides Namespace-Präfix für untergeordnete Elemente nicht erlaubt oder mache ich etwas falsch?

    
Turix 30.01.2014, 01:35
quelle

1 Antwort

2

Es kann ignoriert werden, ich habe es immer getan und ich hatte keine Probleme. Um es zu entfernen, müssen Sie folgendes einstellen:

  1. Fügen Sie xmlns:tools="http://schemas.android.com/tools" zu Ihrer Root-Ansicht hinzu
  2. Fügen Sie tools:ignore="MissingPrefix" zu Ihrer Textansicht hinzu

Als Randnotiz verwende ich jedoch normalerweise benutzerdefinierte Attribute mit benutzerdefinierten Ansichten: -)

    
N.T. 09.08.2015, 01:16
quelle