2016-08-30 11 views
0

コントロールのカスタム属性を作成しようとしています。ここに私のattrs.xmlです:ルートでの私のテストのアプリで参照型のXamarinカスタム属性が機能しません。

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

、私は、この名前空間のxmlnsを追加します。TestCustom = "http://schemas.android.com/apk/res-auto" その後

私のレイアウトファイルで私はイメージビューを持っています

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

最初のandroid:srcプロパティは問題ありませんが、TestCustomは機能しません。

指定されたエラーは「いいえリソースはここに何が起こっているのか...それは(@価値の 『testcustom』」で描画可能/アイコン)を

指定された名前と一致するように見つからない?誰もが任意のアイデアがありますか?

+0

xmlns:TestCustom ??を指定しましたか? – sJy

答えて

0

あなたの特定のパッケージの名前空間にあなたのxmlns:を指定する必要がありますたとえば:。

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

com.example.customviewsのパッケージ名前空間のcustom:を表します。

あなたがここにこの詳細を読むことができます:https://developer.android.com/training/custom-views/create-view.html#customattr

注:あなたは、あなたのカスタム属性に関してcamelCaseの規則を以下検討する必要があり、景色など

+0

実際には、私はこれを既に試してみましたが、それは私のためには機能しませんでした...何かの理由で、私が@drawableを小文字にしてコンパイルを開始したので、ここで何が起こっているのか分からず、さらに調査して報告してください。 –

+0

はい、 'aapt.exe'は大文字/ハイフン/などのものを気に入らないので、これらの項目に' camelCase'やアンダースコアを使用することをお勧めします。 –

0

をだから要約します:ここでの解決策は、カスタム属性を介してリソースを参照するときに小文字の名前を使用することでした。どうやら、Xamarinはバックグラウンドで、通常は大文字で始まるリソースをOKにするいくつかの作業を行っていますが、これはおそらくカスタム属性のためにこれを扱っていません。

Xamarinとカスタム属性を使用していて、リソースを参照できない場合は、小文字で試してみてください!

Jonが推奨するように、リソースには大文字のものをまったく使用しないでください。

関連する問題