Is it possible to add a custom property into a style in an android resource?

前端 未结 2 1947
遇见更好的自我
遇见更好的自我 2021-02-04 00:39

I\'m a using a view flow component into my project, which allows the dev to override some attributes, like that :



        
相关标签:
2条回答
  • 2021-02-04 01:26

    Android Application

    If you are not using Android Libraries, then here is what you can do:

    1. Define custom styleable attribute (I guess you've already done that).
    2. Do not use your namespace prefix in style items (namespace defaults to current app's namespace).

    Example:

    In attrs.xml:

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

    In styles.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>        
        <style name="TestStyle" >
          <item name="testAttr">asdf</item>
        </style>        
    </resources>
    

    Android Library

    If custom attribute comes from Android Library, you can still use described approach. It theoretically should work, because Android Library's namespace is the same as application's (from aapt tool perspective during the build). But I haven't test this myself.


    If you're specifying namespace, it will show error. As far as I know, styles do not support xml namespaces. So this will fail:

    In styles.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:app="http://schemas.android.com/apk/res/app.package.name">        
        <style name="TestStyle" >
          <item name="app:testAttr">asdf</item>
        </style>        
    </resources>
    

    Parser automatically defaults to current app's AndroidManifest namespace, though you can not specify this namespace explicitly.

    0 讨论(0)
  • 2021-02-04 01:31

    You can define the style in terms of your namespace, i've used it myself

    i.e

    <style name="whatever">
        <item name="YourPackage.YourSubPackage:parametername">@drawable_or_anything/bla</item>
    </style>
    
    0 讨论(0)
提交回复
热议问题