我将东西存放在sqlite数据库中。它的一个属性是颜色。当我显示这个时,我想做
objLinearLayout.setBackgroundColor(some_int)
通常我会使用R.color.red代替some_int。但是,我坚持使用颜色,我认为R文件每次运行应用程序时都会生成一个新的红色ID,这使得该方法不可行。我可以存储字符串表示,如“red”,并在我的java代码中检查颜色字符串并应用正确的R.color,但这看起来很难看。有办法吗?
答案 0 :(得分:5)
您不应将R中的值(即R.color.red
)存储在任何类型的永久存储中。该值会在每个应用版本中重新生成,因此,如果更新的内容曾经是R.color.red
现在为R.color.purple
或更差R.layout.activity_main
。
您可以做的是将已解析的颜色存储在SQLite数据库(getResources().getColor(R.color.red)
)中,因为这只是表示颜色的整数,而不是指向颜色的指针。这样,如果您最终将R.color.red
从#F00更改为#E00,则保存的值将为#F00。
答案 1 :(得分:3)
您可以存储十六进制代码并在设置颜色时使用它。
与ll.setBackgroundColor(Color.parseColor("#ffffff"));
以下是对另一个问题的评论的一些很好的解释。
Changing Color with LinearLayout and TextView in Java (Android)
答案 2 :(得分:0)
如果要在数据库中保存颜色名称,可以使用getIdentifier方法。
例如:
Resources resources = getResources();
int colorId = resources.getIdentifier("your_color_name", "color", getPackageName());