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

android, styles

Solution

Android Application

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

- Define custom styleable attribute (I guess you've already done that).

- 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.

Problem

I'm a using a view flow component into my project, which allows the dev to override some attributes, like that : ``` <org.taptwo.android.widget.TitleFlowIndicator ... app:footerTriangleHeight="0dip" ... /> ``` I am reusing this component into several layouts, and I would like to put the properties into a style. But when I'm doing this, the parser says `Error: No resource found that matches the given name: attr 'app:footerTriangleHeight'`, even if I add the namespace in the styles file. Is there a way to do that in android ? Thanks.

Original source

Related problems