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


回答:


142

使用するルートレイアウトのハンドルを取得し、その上に背景色を設定します。ルートレイアウトは、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));

これを行うと、Eclipseは「ここにリソースIDの代わりに解決された色を渡す必要があります:getResources()。getColor(android.R.color.red)」というフラグを立てます。
joriki 2013

25
最終行をroot.setBackgroundColor(getResources().getColor(android.R.color.red));
Luis Mendo 2013

この答えはうまくいきます。しかし、それは質問者によるとまだ完全にプログラマティックではありません。以下に、アルンクマーの答えをお勧めします。
KVISH 2015年

263

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

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

4
同意した。これにより、ルートレイアウトが適用される前にウィンドウの色が変更され、受け入れられた回答により、アクティビティのレイアウトのルート要素の色が変更されます
LairdPleng

1
アクティビティの背景色を設定したいだけなら、これが正しいはずです。
shanwu 2014

ルートウィンドウの色を変更するため、私の+1があります
mparkes

これは間違いなく最高の答えです
1QuickQuestion

これは、そのための最も簡単な方法です。実際に受け入れられたものよりも優れています!
19

85

テーマ別カラーリングが好き

<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>

22
windowBackgroundとcolorBackgroundの違いは何ですか?
AlikElzin-kilaka 2013

1
windowBackgroundを設定するだけで正常に動作します。colorBackgroundの用途は何ですか?
codezjx 2015

8
@ AlikElzin-kilaka:違いは、アプリを起動するandroid:windowBackgroundと、最初に少しの間表示され、次にレイアウトの背景色が引き継がれることです。したがって、2つの異なる色を使用すると、画面上でちらつきます。
GoTo 2016

2
windowBackgroundウィンドウの背景のみにcolorBackground影響しますが、すべてのビューにも影響します。stackoverflow.com/questions/26266221/...
fdermishin

60
?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による背景色の変更


うーん良い点。とにかく、私が与えたリンクはその質問にかなり簡単に答えます。
I8211年

あなたは私に色の正しい値を与えるとは思わない!! 私は#FFFFFFでそれを手に入れました
SJS

これは、xmlでそれを実行したいと思っており、Google検索でここにたどり着く人にとっては良い答えです。
Kacy

9

あなたのonCreate()方法では:

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

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

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)); 代わりに。


8

これを使用して、事前定義されたAndroidカラーを呼び出すことができます。

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

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

element.setBackgroundColor(R.color.mycolour);

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

android:background="#FFFFFF"

最初の手法を使用すると、次のように実際にアクセスする必要があるという警告が表示されます。getResources()。getColor(android.R.color.black);

3

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

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

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

root.setBackgroundResource(Color.WHITE);

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

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


この回答は説明がないコードにすぎないため、低品質の投稿のレビューキューに入れられています。あなたのコードが何をするか、そしてそれがどのように質問に答えるかを説明することによってあなたの答えを改善してください。プログラミングの質問への回答に役立つこのアドバイスをお読みください。
Adi Inbar 2014年

2
これは、背景が要求どおりに白ではなく青にはっきりと設定されるのがおかしいです。
Konrad Lindenbach 14年

1
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);

1
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"));
        }
    });
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.