16進数の値をintに変換して、新しい色のドロアブルを作成しようとしています。これが可能かどうかはわかりませんが、 documentation によれば、そうすべきです。それは明らかに求めている
public ColorDrawable(int color)
APIレベル1で追加指定された色で新しいColorDrawableを作成します。
パラメータcolor描画する色。
そのため、Invalid int: "FF6666"エラーが発生するため、コードが機能しません。何か案は?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
16進数について話しているので、0x
で開始する必要があり、不透明度を忘れないでください。
基本的に:xFFFF6666
ColorDrawable cd = new ColorDrawable(0xFFFF6666);
/ resに新しいcolors.xmlファイルを作成して、次のような色を定義することもできます。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="mycolor">#FF6666</color>
</resources>
r.color.mycolorで定義された色を取得するだけです
getResources().getColor(R.color.mycolor)
ContextCompatで使用し、色を再利用するには、次のようなことができます。
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
こんな感じに...
ColorDrawable cd = new ColorDrawable(0xffff6666);
注:6桁の16進数ではなく、8桁の16進数を使用しました。 which 透明度に追加
上記のアドバイスに従うことにより、この質問の要約になります。
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor( "#ce9b2c")); `
ColorDrawable colorDrawable =新しいColorDrawable(xFFCE9B2C); 6桁の16進数ではなく8桁の16進数があることに注意してください。これは機能しません。すべての場合
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(mContext、R.color.default_color));
あなた次第!
私はあなたが使用しなければならないと思います:
public static int parseColor(String colorString)
APIレベル1で追加色ストリングを解析し、対応するcolor-intを返します。文字列を解析できない場合、IllegalArgumentException例外をスローします。サポートされている形式は次のとおりです。シルバー、ティール
これは、16進数の色をintに変換し、ビューの背景に適用する方法です。
色#8080000があるとしましょう。
int myColor = Color.parseColor("#808000");
view.setBackgroundColor(context.getColor(myColor));