我应该如何在sqlite中存储颜色?

时间:2014-10-30 00:10:01

标签: android sqlite activeandroid

我将东西存放在sqlite数据库中。它的一个属性是颜色。当我显示这个时,我想做

objLinearLayout.setBackgroundColor(some_int)

通常我会使用R.color.red代替some_int。但是,我坚持使用颜色,我认为R文件每次运行应用程序时都会生成一个新的红色ID,这使得该方法不可行。我可以存储字符串表示,如“red”,并在我的java代码中检查颜色字符串并应用正确的R.color,但这看起来很难看。有办法吗?

3 个答案:

答案 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());