微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在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();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。