web-dev-qa-db-ja.com

プログラムでアクティビティの背景色を白に設定する方法は?

プログラムでアクティビティの背景色を白に設定するにはどうすればよいですか?

120
SJS

使用されるルートレイアウトへのハンドルを取得し、その背景色を設定します。ルートレイアウトは、setContentViewと呼ばれるものです。

 setContentView(R.layout.main);

  // Now get a handle to any View contained 
  // within the main layout you are using
  View someView = findViewById(R.id.randomViewInMainLayout);

  // Find the root view
  View root = someView.getRootView();

  // Set the color
  root.setBackgroundColor(getResources().getColor(Android.R.color.red));
131
Hamy

setContentView()呼び出しの後、アクティビティにこの1行を追加します

getWindow().getDecorView().setBackgroundColor(Color.WHITE);
242
Arunkumar

テーマごとのカラーリングが好き

<style name="CustomTheme" parent="Android:Theme.Light">
    <item name="Android:windowBackground">@color/custom_theme_color</item>
    <item name="Android:colorBackground">@color/custom_theme_color</item>
</style>
77
David
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="#FFFFFF"
Android:id="@+id/myScreen"
</LinearLayout>

つまり、「Android:background」は、変更するXMLのタグです。

バックグラウンド値を動的に更新する必要がある場合は、次を参照してください。

練習:SeekBarによる背景色の変更

58
I82Much

これを使用して、定義済みのAndroid色を呼び出すことができます。

element.setBackgroundColor(Android.R.color.red);

独自のカスタムカラーのいずれかを使用する場合は、strings.xmlにカスタムカラーを追加してから、以下を使用して呼び出すことができます。

element.setBackgroundColor(R.color.mycolour);

ただし、layout.xmlで色を設定する場合は、それを受け入れる要素に以下を変更して追加できます。

Android:background="#FFFFFF"
7
Luke Alderton

onCreate()メソッドで:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));

また、color.xmlという新しいXMLファイルをvaluesフォルダーに追加し、そこに新しいカラープロパティを割り当てる必要があります。

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>

color.xmlには任意の名前を付けることができますが、コードではR.color.yourIdとして参照することに注意してください。

編集

getResources().getColor()は推奨されないため、代わりにgetWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));を使用してください。

7
God

アクションバーなしでxmlファイルで定義されたルートビューを取得するには、これを使用できます。

View root = ((ViewGroup) findViewById(Android.R.id.content)).getChildAt(0);

したがって、色を白に変更するには:

root.setBackgroundResource(Color.WHITE);
3
KitKat
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

私のために働いた。ありがとうございました。

3
Hemal Adani
final View rootView = findViewById(Android.R.id.content);
rootView.setBackgroundResource(...);
1
rds
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button)findViewById(R.id.button);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            root =findViewById(R.id.activity_main).getRootView();
            root.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    });
}
1
saleem kalro

私は同様の問題を抱えていて、上記の回答に記載されている手順に従いました。私が私のために働いたものを共有します。

私はRecyclerViewを使用していて、アイテムの背景色を設定していました。ただし、アイテムの数が画面に収まらない場合は奇妙に見えました

私の初期レイアウト

次に、関数を使用しました

public void setActivityBackgroundColor(int color) {
        View view = this.getWindow().getDecorView();
        view.setBackgroundColor(color);
    }

そして、別の関数のコードで関数setActivityBackgroundColor(R.color.colorAccent);を呼び出しました。 このレイアウト につながりました。かなり変だ。

最終的に、 KitKat の提案に従って修正しました。

public void setActivityBackgroundColor(int color) {
        View view = this.getWindow().getDecorView();
        view.setBackgroundResource(color);
    }

これが最終的に 修正済み です。

編集:RecyclerViewにデータが入力されていない場合、ソリューションはエラーをスローし始めました。その場合、ビューが空かどうかを確認するフラグを設定します。

 public void setActivityBackgroundColor(int color) {
        View view = this.getWindow().getDecorView();
        if (dataIsNull) {
            view.setBackgroundColor(color);
        }
        else {
            view.setBackgroundResource(color);
        }
    }

今では魅力のように機能します。

0
anshajkhare

これを使って :

myActivity.setBackgroundColor(ContextCompat.getColor(this, R.color.colorWhite));
0
Ali Khaki