1. ホーム
  2. アンドロイド

[解決済み】カスタムビューのattrs.xmlに同じ名前の属性が存在する。

2022-04-10 18:51:39

質問

いくつかのカスタムビューを作成していますが、同じ名前の属性がいくつかあります。それぞれの <declare-styleable> セクションの attrs.xml 属性に同じ名前を使いたいのですが。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyView1">
        <attr name="myattr1" format="string" />
        <attr name="myattr2" format="dimension" />
        ...
    </declare-styleable>

    <declare-styleable name="MyView2">
        <attr name="myattr1" format="string" />
        <attr name="myattr2" format="dimension" />
        ...
    </declare-styleable>
</resources>

というエラーが表示されます。 myattr1myattr2 はすでに定義されています。を省略すればいいことがわかりました。 format 属性は myattr1myattr2MyView2 と表示されるのですが、そうするとコンソールに以下のようなエラーが表示されます。

[2010-12-13 23:53:11 - MyProject] ERROR: In <declare-styleable> MyView2, unable to find attribute 

これを達成する方法はありますか、多分ある種の名前空間(ちょうど推測)?

どのように解決するのですか?

解決方法 両方のビューから共通の属性を抽出し、それらを直接 <resources> ノードがあります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="myattr1" format="string" />
    <attr name="myattr2" format="dimension" />

    <declare-styleable name="MyView1">
        <attr name="myattr1" />
        <attr name="myattr2" />
        ...
    </declare-styleable>

    <declare-styleable name="MyView2">
        <attr name="myattr1" />
        <attr name="myattr2" />
        ...
    </declare-styleable>
</resources>