我在我的项目中使用视图流组件,它允许开发人员覆盖一些属性,例如:
<org.taptwo.android.widget.TitleFlowIndicator
...
app:footerTriangleHeight="0dip"
... />
我正在多个布局中重用此组件,并且我想将属性放入样式中。
但是当我这样做时,解析器说Error: No resource found that matches the given name: attr 'app:footerTriangleHeight'
,即使我在样式文件中添加命名空间。
有没有办法在 android 中做到这一点?
Thanks.
安卓应用
如果您不使用 Android 库,那么您可以执行以下操作:
- 定义自定义样式属性(我想您已经这样做了)。
- 不要在样式项中使用命名空间前缀(命名空间默认为当前应用程序的命名空间)。
Example:
In 属性.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="testAttr" format="string"/>
</resources>
In 样式.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TestStyle" >
<item name="testAttr">asdf</item>
</style>
</resources>
安卓库
如果自定义属性来自 Android 库,您仍然可以使用所描述的方法。理论上它应该可以工作,因为 Android 库的命名空间与应用程序的命名空间相同(来自aapt
构建期间的工具视角)。但我自己还没有测试过。
如果您指定名称空间,则会显示错误。据我所知,样式不支持 xml 命名空间。所以这会失败:
In 样式.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>
解析器自动默认为当前应用程序的AndroidManifest
命名空间,尽管您不能显式指定该命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)