我需要传递个人色彩
<color name="colorPrimary">#3F51B5</color>
在HashMap中像这样
temp.put(COLOR_COLUMN, String.valueOf(R.color.colorPrimary));
当我读取值时,我会这样做:
if(map.get(COLOR_COLUMN) != null){
int color = Integer.valueOf(map.get(COLOR_COLUMN));}
和我的 TextView setBackgroundColor(color)
但值类似于 2131492900,颜色为灰色,与我设置的起始颜色非常不同
如何解决?
谢谢
最佳答案
Android 中的资源(例如 R.color.colorPrimary)实际上由整数形式的资源 id 表示。它不是实际的颜色值。要获取颜色值,您可以使用提供的 int getColor(int id)
方法。另请参阅Accessing Resources在 Android 开发者指南中。
保存资源 ID 并重用颜色的正确方法是:
HashMap<Integer, Integer> temp = new HashMap<>();
temp.put(COLOR_COLUMN, R.color.colorPrimary);
int resourceId = temp.get(COLOR_COLUMN);
view.setBackgroundColor(getColor(resourceId));
作为替代方案,您也可以直接保存颜色的整数表示形式(而不是其资源 ID):
HashMap<Integer, Integer> temp = new HashMap<>();
temp.put(COLOR_COLUMN, getColor(R.color.colorPrimary));
int color = temp.get(COLOR_COLUMN);
view.setBackgroundColor(color);
如果出于任何原因您需要将资源的 id 保存为字符串,您当然可以这样做:
HashMap<Integer, String> temp = new HashMap<>();
temp.put(COLOR_COLUMN, String.valueOf(R.color.colorPrimary));
int resourceId = Integer.parseInt(temp.get(COLOR_COLUMN));
view.setBackgroundColor(getColor(resourceId));
我假设您的 COLOR_COLUMN
变量是一个整数。
关于java - Listview的HashMap背景颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530642/