是否有可能将自定义属性添加到Android资源中的样式?

我是在我的项目中使用视图stream组件,它允许开发人员重写一些属性,如:

<org.taptwo.android.widget.TitleFlowIndicator ... app:footerTriangleHeight="0dip" ... /> 

我正在重复使用这个组件到几个布局,我想把属性放入一个样式。 但是,当我这样做时,parsing器说Error: No resource found that matches the given name: attr 'app:footerTriangleHeight' ,即使我在样式文件中添加了命名空间。

有没有办法做到这一点在Android?

谢谢。

Solutions Collecting From Web of "是否有可能将自定义属性添加到Android资源中的样式?"

Android应用程序

如果你不使用Android库,那么你可以这样做:

  1. 定义自定义样式属性(我想你已经做到了)。
  2. 不要在样式项中使用命名空间前缀(命名空间默认为当前应用程序的命名空间)。

例:

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库的命名空间与应用程序的相同(从构build期间的aapt工具angular度来看)。 但是我自己没有testing过。


如果你指定命名空间,它会显示错误。 据我所知,样式不支持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> 

parsing器自动默认为当前应用程序的AndroidManifest命名空间,但不能显式指定此名称空间。

你可以根据你的命名空间来定义样式,我自己使用它

 <style name="whatever"> <item name="YourPackage.YourSubPackage:parametername">@drawable_or_anything/bla</item> </style>