Search code examples
androidcustom-attributes

Custom Attributes in Android


I'm trying to create a custom attribute called Tag for all editable elements. I added the following to attrs.xml

<declare-styleable name="Spinner">
    <attr name="tag" format="string" />
</declare-styleable>

<declare-styleable name="EditText">
    <attr name="tag" format="string" />
</declare-styleable>

I get an error saying "Attribute tag has already been defined" for the EditText. Is it not possible to create a custom attribute of the same name on different elements?


Solution

  • If you are going to use an attr in more than one place then put it in the root element inside the <resources> element like the following :

    <resources>
        
        <attr name="tag" format="string" />
    
        <declare-styleable name="Spinner">
            <attr name="tag" />
        </declare-styleable>
    
        <declare-styleable name="EditText">
            <attr name="tag" />
        </declare-styleable>
    
    </resources>
    

    Now you can use the tag attribute in anywhere you want inside this xml file.