web-dev-qa-db-ja.com

新しい色のドロアブルを作成します

16進数の値をintに変換して、新しい色のドロアブルを作成しようとしています。これが可能かどうかはわかりませんが、 documentation によれば、そうすべきです。それは明らかに求めている

public ColorDrawable(int color)

APIレベル1で追加指定された色で新しいColorDrawableを作成します。

パラメータcolor描画する色。

そのため、Invalid int: "FF6666"エラーが発生するため、コードが機能しません。何か案は?

int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
67
stacksonstacks

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)
142
Enrichman

ContextCompatで使用し、色を再利用するには、次のようなことができます。

ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
15
JpCrow

こんな感じに...

ColorDrawable cd = new ColorDrawable(0xffff6666);

注:6桁の16進数ではなく、8桁の16進数を使用しました。 which 透明度に追加

10
CRUSADER

上記のアドバイスに従うことにより、この質問の要約になります。

  1. ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor( "#ce9b2c")); `

  2. ColorDrawable colorDrawable =新しいColorDrawable(xFFCE9B2C); 6桁の16進数ではなく8桁の16進数があることに注意してください。これは機能しません。すべての場合

  3. ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(mContext、R.color.default_color));

あなた次第!

4
BertKing

私はあなたが使用しなければならないと思います:

public static int parseColor(String colorString)

APIレベル1で追加色ストリングを解析し、対応するcolor-intを返します。文字列を解析できない場合、IllegalArgumentException例外をスローします。サポートされている形式は次のとおりです。シルバー、ティール

4
HpTerm

これは、16進数の色をintに変換し、ビューの背景に適用する方法です。

色#8080000があるとしましょう。

1)16進数からintへの変換

int myColor = Color.parseColor("#808000");

2)背景を設定する

view.setBackgroundColor(context.getColor(myColor));
0
Rohit Singh