如何解决如何在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 举报,一经查实,本站将立刻删除。