java - Listview的HashMap背景颜色值

标签 java android colors background-color

我需要传递个人色彩

<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/

相关文章:

java - 转到下一页时应用程序崩溃( Intent )

android - 更改 android 的媒体 DATE_TAKEN 格式

android - 将 parent 用于可绘制资源

user-interface - 给定背景颜色的良好文本前景色

html - CSS 属性裁剪颜色背景

jquery - 尝试通过在 jquery 中使用包含过滤器来更改文本的颜色

java - JavaFx Gui 与 Swing 的性能对比

java - 如何修复 'Cleartext HTTP traffic to x not permitted'

java - Apache HttpClient 持久连接使用

java - 为 DAG 分配优先级