如何在Android中使用for循环从R.color获取所有颜色

问题描述

我想知道如何使用循环获取所有R.color返回对象的颜色。 请给我一个使用Kotlin的答案

解决方法

我不知道是否可以对资源中的每种颜色进行迭代,但是您可以创建颜色数组,添加所需的每种颜色,然后在代码中获得该数组。在您的res/colors中添加:

<resources>

    <!--Define Your colors here-->
    <color name="red">#FF0000</color>
    <color name="yellow">#FFFF00</color>
    <color name="green">#00FF00</color>
    <color name="blue">#0000FF</color>

    <array name="array_of_colors">
        <item>@color/red</item>
        <item>@color/yellow</item>
        <item>@color/green</item>
        <item>@color/blue</item>
    </array>

</resources>

在代码中,您可以这样获得它:

val colors: IntArray = resources.getIntArray(R.array.array_of_colors)

colors.forEach {
    Log.i("MyTag","Color: $it")
    // Here You can do something with color
}
,

尽管一般而言,反思不是明智的做法,但我认为这是唯一的实践方法。

使用反射记录所有颜色资源的代码如下:

for (Field colorField : R.color.class.getFields()) {
    try {
        Log.d("COLORS","name: " + colorField.getName() + ",value: " + colorField.get(R.color.class));
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...