我在我的项目中使用了一个视图流组件,它允许dev覆盖一些属性,如:
<org.taptwo.android.widget.TitleFlowIndicator
...
app:footerTriangleHeight="0dip"
... />
Run Code Online (Sandbox Code Playgroud)
我正在将这个组件重用到几个布局中,我想将属性放入一个样式中.但是当我这样做时,解析器说Error: No resource found that matches the given name: attr 'app:footerTriangleHeight'
,即使我在样式文件中添加了命名空间.
有没有办法在Android中做到这一点?
谢谢.
ina*_*ruk 39
Android应用程序
如果您没有使用Android库,那么您可以执行以下操作:
例:
在attrs.xml中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="testAttr" format="string"/>
</resources>
Run Code Online (Sandbox Code Playgroud)
在styles.xml中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TestStyle" >
<item name="testAttr">asdf</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
Android库
如果自定义属性来自Android库,您仍然可以使用所描述的方法.它理论上应该可行,因为Android Library的命名空间与应用程序的命名空间相同(从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>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest
虽然您无法明确指定此命名空间,但解析器会自动默认为当前应用程序的命名空间.
您可以根据命名空间定义样式,我自己也使用过它
即
<style name="whatever">
<item name="YourPackage.YourSubPackage:parametername">@drawable_or_anything/bla</item>
</style>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8505 次 |
最近记录: |