在安卓上,我应该把选择器颜色保存在哪里?

4

这是我的选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="@color/black"/>
    <item android:color="@color/white"/>

</selector>

显然我无法在drawable文件夹中保存它,因为我的Android应用无法编译。如果我在res文件夹下创建一个名为color的文件夹,则在Eclipse中会出现红色标记。那么我应该将选择器保存在哪里,以便将其用作TextView(或任何其他视图)的背景颜色呢?
在values文件夹中我有一个名为colors.xml的文件,但是我该如何将选择器添加到其中呢?
实际解决方案:
我在此编辑中发布了解决方案,希望能帮助其他人并节省你们的时间。
正确的解决方法如下:
在strings.xml文件中:
<drawable name="black_drawable">@color/black</drawable>
<drawable name="white_drawable">@color/white</drawable>

colors.xml文件中:
<color name="black">#000000</color>
<color name="white">#ffffff</color>

然后在选择器中,我进行了如下操作

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/black_drawable" android:state_pressed="true"/>
    <item android:drawable="@drawable/white_drawable"/>

</selector>

选择器保存在/drawable中,文件名为selector_black_white.xml

2
你应该在 values 文件夹内创建 _color.xml_,而不是在 res 文件夹中。 - Rick
抱歉打错了字,我改了颜色但错误仍然存在。 - learner
你能发布 color.xml 文件吗?也许带数字的名称不被允许。 - Rick
你的设置是正确的;<selector> 放在 res/drawable 中,颜色放在 res/values/colors.xml 中。你的 <selector> 看起来不错,所以贴出你的 colors.xml。你的颜色名称不应该有任何问题。 - MartinHaTh
为什么要在strings.xml中存储drawable - MartinHaTh
3个回答

2

这里是我找到的解决方案。

您只需在res文件夹中创建一个名为"color"的文件夹,并将文件保存在新创建的文件夹中。

完成此步骤后,您便能在相应xml文件的属性中获取颜色选择器文件。

我附加了屏幕截图以更好地理解。

步骤1

步骤2


1

我上一次编辑时搞砸了,非常抱歉,这次已经修好了。 res/drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@color/whiteColor"/>
    <item android:drawable="@color/backColor"/>

</selector>

然后在您的res/value/string上或创建新值的颜色。
<color name="whiteColor">#000000</color>



 <color name="backColor">#ffffff</color>

那不是问题。问题仍然存在。我编辑了我的帖子并提供了更多细节。 - learner
我明白你的意思,看看我的最后一次编辑,在第一段代码中,我将你的android:color更改为android:drawble,应该可以工作。请尝试并告诉我。 - murielK
选择器应该放在res/drawable文件夹中。 - murielK
我在 <color name="BbackColor">#ffffff</color> 中拼写错误了,只需删除“B”即可。 - murielK
你的代码有点凌乱,但是在这次最后一次编辑之前的代码中,我找到了解决我的问题的线索 :) 。我会在我的原始帖子中展示我的解决方案,以便其他需要帮助的人可以参考。 - learner
是的,我知道,对于混淆感到抱歉,这就是当你试图同时做很多事情时发生的事情 :) - murielK

1
我认为你的问题不在于位置,而应该在于/res/color文件夹中。问题在于你如何指定颜色:
  <item android:color="@color/ffffff"/>

应该是:

   <item android:color="#ffffff"/>

那不是问题。问题仍然存在。我编辑了我的帖子并提供了更多细节。 - learner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接