2016-08-30 1 views
0

Ich versuche, ein benutzerdefiniertes Attribut für meine Kontrolle zu erstellen. Hier mein attrs.xml ist:Xamarin benutzerdefinierte Attribut des Referenztyps funktioniert nicht

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <declare-styleable name="ImageView"> 
    <attr name="testcustom" format="reference"/> 
    </declare-styleable> 
</resources> 

In meinem Test-App an der Wurzel, füge ich diesem Namensraum xmlns: TestCustom = "http://schemas.android.com/apk/res-auto"

Später in meiner Layout-Datei habe ich ein Bild Ansicht

<ImageView 
    android:src="@drawable/Icon" 
    TestCustom:testcustom="@drawable/Icon"/> 

Das erste android: src-Eigenschaft in Ordnung ist, ist jedoch TestCustom nicht.

Der Fehler gegeben ist „Keine Ressource gefunden, die den angegebenen Namen übereinstimmt (bei‚testcustom‘mit dem Wert‚@ ziehbar/Symbol)

Also ... was hier los? Wer irgendwelche Ideen?

+0

Haben Sie xmlns: TestCustom ?? – sJy

Antwort

0

Sie benötigen xmlns: auf Ihr spezielles Paket Namespace angeben. zum Beispiel:

xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews"

Stellen custom: für das Paket Namespace von com.example.customviews .

Sie können mehr über diese hier lesen: https://developer.android.com/training/custom-views/create-view.html#customattr

Hinweis: Möglicherweise möchten Sie nach der Konvention von camelCase in Bezug auf Ihre benutzerdefinierte Attribute, Ansichten prüfen usw.

+0

Eigentlich habe ich das schon versucht, und es hat nicht für mich funktioniert ... Ich denke, ich bin jetzt auf etwas, aber aus irgendeinem Grund, als ich meine @drawable lowcased es begann zu kompilieren ??? Ich bin mir nicht sicher, was hier vor sich geht, werde mehr recherchieren und berichten. –

+0

Ja, weil 'aapt.exe' keine Dinge mit Groß- und Kleinschreibung/Bindestrichen etc. mag. Ich empfehle Ihnen,' camelCase' und/oder Unterstriche für diese Elemente zu verwenden. –

0

So zu rekapitulieren: Die Lösung bestand darin, einen Kleinbuchstabennamen zu verwenden, wenn die Ressource über ein benutzerdefiniertes Attribut referenziert wird. Anscheinend arbeitet Xamarin im Hintergrund, was normalerweise erlaubt, dass Ressourcen, die mit Großbuchstaben beginnen, in Ordnung sind, aber wahrscheinlich nicht für benutzerdefinierte Attribute.

Wenn Sie Xamarin und benutzerdefinierte Attribute verwenden und Sie Ihre Ressource nicht referenzieren können, versuchen Sie es in Kleinbuchstaben !!!

Oder wie Jon empfiehlt, verwenden Sie keine Großbuchstaben Zeug für Ressourcen.

Verwandte Themen