我的Android项目中有一些自定义视图,我已将相关详细信息添加到attrs.xml文件中。现在我可以通过XML实现我的对象了。这很好。
如何设置这些元素的样式?当我尝试在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>
答案 0 :(得分:18)
在Google上进行了更深入的搜索后,我放弃了在其他地方找到答案,并且偶然尝试使用我生成的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>
答案 1 :(得分:2)
为了澄清,项目的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的限制。
答案 2 :(得分:0)
尝试此解决方案
<style name="Journey_DaySelect_Sunday">
<item name="onImage">@drawable/day_sunday_selected</item>
<item name="offImage">@drawable/day_sunday</item>
</style>
如果你认为它有用,我会翻译它。