Приложение для Android
Если вы не используете библиотеки Android, вот что вы можете сделать:
- Определить настраиваемый настраиваемый атрибут (думаю, выВы уже сделали это).
- Не используйте префикс пространства имен в элементах стиля (пространство имен по умолчанию соответствует пространству имен текущего приложения).
Пример:
В attrs.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="testAttr" format="string"/>
</resources>
В styles.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TestStyle" >
<item name="testAttr">asdf</item>
</style>
</resources>
Библиотека Android
Если пользовательский атрибут поступает из библиотеки Android, вы все равно можете использовать описанный подход.Теоретически это должно работать, поскольку пространство имен библиотеки Android совпадает с пространством имен приложения (с точки зрения инструмента aapt
во время сборки).Но я не проверял это сам.
Если вы указываете пространство имен, оно покажет ошибку.Насколько я знаю, стили не поддерживают пространства имен xml.Поэтому произойдет сбой:
В 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 автоматически по умолчанию использует пространство имен AndroidManifest
текущего приложения, хотя вы не можете явно указать это пространство имен.