2

私はsqliteデータベースに物を保存しています。その属性の 1 つは色です。これを表示すると、やりたい

objLinearLayout.setBackgroundColor(some_int)

通常、some_int の代わりに R.color.red を使用します。ただし、私は色を保持しています。アプリを実行するたびに R ファイルが赤の新しい ID を生成するため、その方法は実行できないと思います。「赤」などの文字列表現を保存し、Java コードで色文字列をチェックして正しい R.color を適用することはできますが、見苦しく見えます。それを回避する方法はありますか?

4

3 に答える 3

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 になります。

于 2014-10-30T00:36:17.710 に答える
4

16 進コードを保存して、色を設定するときに使用できます。お気に入りll.setBackgroundColor(Color.parseColor("#ffffff"));

別の質問のコメントに関する良い説明があります。

Java (Android) で LinearLayout と TextView を使用して色を変更する

于 2014-10-30T00:24:31.960 に答える
0

色の名前を DB に保存する場合は、getIdentifier メソッドを使用できます。

例えば:

Resources resources = getResources();
int colorId = resources.getIdentifier("your_color_name", "color", getPackageName()); 
于 2014-10-30T00:29:18.800 に答える