【问题标题】:what should i store colors as in sqlite?我应该在 sqlite 中存储什么颜色?
【发布时间】:2014-10-30 08:36:17
【问题描述】:

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

objLinearLayout.setBackgroundColor(some_int)

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

【问题讨论】:

  • 十六进制和使用其他函数转换为您需要的任何其他格式怎么样?

标签: android sqlite activeandroid


【解决方案1】:

您不应将 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。

【讨论】:

    【解决方案2】:

    您可以存储十六进制代码并在设置颜色时使用它。 赞ll.setBackgroundColor(Color.parseColor("#ffffff"));

    这里是关于另一个问题的 cmets 的一些很好的解释。

    Changing Color with LinearLayout and TextView in Java (Android)

    【讨论】:

      【解决方案3】:

      如果你想在你的数据库中保存颜色的名称,你可以使用 getIdentifier 方法。

      例如:

      Resources resources = getResources();
      int colorId = resources.getIdentifier("your_color_name", "color", getPackageName()); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 1970-01-01
        • 2017-02-01
        • 1970-01-01
        相关资源
        最近更新 更多