Listview 的 HashMap 背景颜色值
HashMap background color value for Listview
我要传个人色彩
<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)
方法。另请参阅 Android 开发人员指南中的 Accessing Resources。
保存资源 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
变量是一个整数。
我要传个人色彩
<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)
方法。另请参阅 Android 开发人员指南中的 Accessing Resources。
保存资源 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
变量是一个整数。