为自定义视图设置样式

我在我的Android项目中有几个自定义的视图,我已经将相关的细节添加到attrs.xml文件。 现在我可以通过XML实现我的对象。 这工作正常。

我如何devise这些元素? 当我尝试在styles.xml中使用自定义属性时出现错误“找不到与给定名称匹配的资源:”

为了在正常的xml开发中使用自定义视图,我使用了xmlns:app =“http://schemas.android.com/apk/res/bla.bla.bla”。 在样式中使用什么是正确的?

这就是我现在的风格

<style name="Journey_DaySelect_Sunday"> <item name="app:onImage">@drawable/day_sunday_selected</item> <item name="app:offImage">@drawable/day_sunday</item> </style> 

在Google上进行更深入的search之后,我放弃了在其他地方find答案, 偶然尝试使用我生成的R文件的绝对命名空间。 愿这能解决你所有的问题。

使用包含R文件的名称空间

 <style name="Journey_DaySelect_Sunday" parent="Journey_DaySelect"> <item name="AppZappy.NIRailAndBus:onImage">@drawable/day_sunday_selected</item> <item name="AppZappy.NIRailAndBus:offImage">@drawable/day_sunday</item> </style> 

为了说明起见,项目的name属性应该和attrs.xml的declare-styleable name属性+“:”+属性名称相同。

例如:

attrs.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="com.chuck.norris"> <attr name="actionBarTextColor" format="color"/> </declare-styleable> </resources> 

style.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="myNewStyle"> <item name="android:textColor">#FFFF0000</item> <item name="com.chuck.norris:actionBarTextColor">#ffff0000</item> </style> </resources> 

然后,您可以通过在manifest.xml文件中使用主题将此样式应用于所有活动。 无论您想使用“actionBarTextColor”属性的自定义视图存在,您都可以使用Java代码:

 TypedArray typedArray = context.obtainStyledAttributes(attrSet, R.styleable.com_chuck_norris); COLOR_ACTION_BAR_TEXT = typedArray.getColor(R.styleable.com_chuck_norris_actionBarTextColor, 0xff0000ff); typedArray.recycle(); 

我不确定为什么你不能像上面提到的那样只在你的style.xml文件中定义你的模式,但是它似乎是style.xml的限制。

试试这个解决scheme

 <style name="Journey_DaySelect_Sunday"> <item name="onImage">@drawable/day_sunday_selected</item> <item name="offImage">@drawable/day_sunday</item> </style> 

参考(中国)

如果你们觉得有用,我会翻译它。