8

我的 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>
4

3 回答 3

19

在 Google 上进行了更深入的搜索后,我放弃了在其他地方找到它的答案,并且偶然尝试使用我生成的 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>
于 2011-03-18T20:14:55.040 回答
2

为澄清起见,项目的名称属性应与 attrs.xml 的可声明样式名称属性 +“:” + 属性名称中的相同。

例如:

attrs.xml:

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

样式.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 的一个限制。

于 2012-01-03T19:05:36.870 回答
0

试试这个解决方案

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

参考(中文)

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

于 2016-07-12T06:14:58.807 回答