web-dev-qa-db-ja.com

プログラムで背景色を設定する

背景色をプログラムで設定しようとしましたが、すべての色を設定すると背景は黒になりますが、アプリケーションのテーマのように色の背景は白になります。

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(color.white);

あなたはコードを見ることができますか?

109
user3274646

私はあなたの質問を理解していませんでした…あなたが「私が私の色の一つ一つを設定するとき」とはどういう意味ですか?これを試してみてください(元の答えの "#fffff"を "#ffffff"に変更)。

  yourView.setBackgroundColor(Color.parseColor("#ffffff"));
146

getResources()メソッドを使う必要があります。次のコードを試してください。

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(getResources().getColor(color.white)); 

編集::

getResources.getColor()は推奨されていないので、次のように使用します。

 root.setBackgroundColor(ContextCompat.getColor(this, R.color.white)); 

あなたが使用することができます

 root.setBackgroundColor(0xFFFFFFFF);

または

 root.setBackgroundColor(Color.parseColor("#ffffff"));
35
Piyush

これまでの答えは推奨されなくなりました。色を正しく取得するにはContextCompat.getColorを使用する必要があります。

root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
30
Yoann Hercouet

定義済みのAndroidカラーをいくつか使用するだけの場合は、Color.COLORを使用できます(COLORBLACKWHITEREDなど)。

myView.setBackgroundColor(Color.GREEN);

それ以外の場合は、他の人が提案したようにすることができます

myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));

私は直接16進数の色を使うことを勧めません。カスタムカラーはすべてcolors.xmlに保存してください。

10
Suragch

これはうまくいくはずです。

カラーリソースを取得するにはgetResources()。getColor(R.color.WHITE)を使用する必要があります。これはcolors.xmlリソースファイルに追加する必要があります。

View someView = findViewById(R.id.screen);

someView.setBackgroundColor(getResources().getColor(R.color.WHITE));
6
Hatim

私の場合は、私のxmlリソースで色を設定するだったので、色は変わりませんでした。

色を設定した行を削除した後、それは完全にプログラム的に働いた

これは私がRecyclerViewでやった例です

final Drawable drawable = ContextCompat.getDrawable(mContext, R.drawable.ic_icon).mutate();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    holder.image.setBackground(drawable);
} else {
    holder.image.setBackgroundDrawable(drawable);
}
2
Jorge Casariego

Valuesフォルダの配下のcolors.xmlにカラーコードを保存する場合は、次のようにしてください。

root.setBackgroundColor(getResources().getColor(R.color.name));

nameは、<color/>タグで宣言することを意味します。

2
Hay Thi