Bagaimana mengatur warna latar belakang suatu Kegiatan menjadi putih secara terprogram?

Jawaban:

142

Dapatkan pegangan untuk tata letak root yang digunakan, lalu atur warna latar belakangnya. Layout root adalah apa pun yang Anda sebut 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));
Hamy
sumber
Ketika saya melakukan ini, Eclipse menandainya dengan "Seharusnya lulus warna yang diselesaikan alih-alih id sumber daya di sini: getResources (). GetColor (android.R.color.red)".
joriki
25
Ubah baris terakhir keroot.setBackgroundColor(getResources().getColor(android.R.color.red));
Luis Mendo
Jawaban ini berhasil; tetapi masih belum sepenuhnya terprogram sesuai dengan penanya. Saya akan menyarankan jawaban Arunkumar di bawah ini.
KVISH
263

Tambahkan baris ini di aktivitas Anda, setelah setContentView()panggilan

getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Arunkumar
sumber
4
sepakat. ini mengubah warna jendela sebelum tata letak root diterapkan, jawaban yang diterima mengubah warna elemen root dalam tata letak aktivitas
LairdPleng
1
Saya pikir ini harus menjadi yang benar, jika Anda hanya ingin mengatur warna latar belakang kegiatan.
shanwu
memiliki +1 saya karena mengubah warna jendela root
mparkes
Ini jelas merupakan jawaban terbaik
1QuickQuestion
Ini adalah metode termudah untuk melakukan itu. Sebenarnya lebih baik daripada yang diterima!
Dinith
85

Saya lebih suka mewarnai berdasarkan tema

<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>
David
sumber
22
Apa perbedaan antara windowBackground dan colorBackground?
AlikElzin-kilaka
1
Cukup atur windowBackground dan berfungsi dengan baik. Apa gunanya colorBackground?
codezjx
8
@ AlikElzin-kilaka: perbedaannya adalah bahwa ketika aplikasi mulai android:windowBackgroundterlihat pertama, untuk sesaat, dan kemudian warna latar tata letak mengambil alih. Jadi jika Anda menggunakan dua warna berbeda, itu akan berkedip di layar.
GoTo
2
windowBackgroundhanya memengaruhi latar belakang jendela, tetapi juga colorBackgroundmemengaruhi semua tampilan. 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>

Dengan kata lain, "android: background" adalah tag di XML yang ingin Anda ubah.

Jika Anda perlu memperbarui nilai latar belakang secara dinamis, lihat yang berikut:

Latihan: Ubah warna latar belakang, oleh SeekBar

I82Much
sumber
Poin bagus saya. Yah terlepas dari itu, tautan yang saya berikan jawaban pertanyaan itu cukup mudah.
I82Much
saya tidak berpikir Anda memberi saya nilai yang tepat untuk warna !! saya mengerti dengan #FFFFFF
SJS
Ini adalah jawaban yang bagus bagi kita yang ingin melakukannya dalam xml dan tiba di sini melalui pencarian google.
Kacy
9

Dalam onCreate()metode Anda :

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

Anda juga perlu menambahkan ke folder nilai file XML baru yang disebut color.xmldan Tetapkan di sana properti warna baru:

color.xml:

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

Perhatikan bahwa Anda dapat memberi nama color.xmlnama yang Anda inginkan tetapi Anda menyebutnya dengan kode sebagai R.color.yourId.

EDIT

Karena getResources().getColor()sudah usang, gunakan getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); saja.

Tuhan
sumber
8

Anda dapat menggunakan ini untuk memanggil warna android yang telah ditentukan:

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

Jika Anda ingin menggunakan salah satu warna kustom Anda sendiri, Anda dapat menambahkan warna kustom Anda ke strings.xml dan kemudian gunakan di bawah ini untuk menyebutnya.

element.setBackgroundColor(R.color.mycolour);

Namun jika Anda ingin mengatur warna di layout.xml Anda dapat memodifikasi dan menambahkan di bawah ini ke elemen apa pun yang menerimanya.

android:background="#FFFFFF"
Luke Alderton
sumber
Jika saya menggunakan teknik pertama saya mendapat peringatan bahwa itu harus benar-benar diakses seperti ini: getResources (). GetColor (android.R.color.black);
3

Untuk mendapatkan tampilan root didefinisikan dalam file xml Anda, tanpa bilah tindakan, Anda dapat menggunakan ini:

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

Jadi, untuk mengubah warna menjadi putih:

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

bekerja untukku. Terima kasih.

Hemal Adani
sumber
Jawaban ini ada dalam antrian ulasan Kiriman Kualitas Rendah karena hanya berupa kode tanpa penjelasan. Harap tingkatkan jawaban Anda dengan menjelaskan apa yang kode Anda lakukan dan bagaimana ia menjawab pertanyaan itu. Harap baca saran ini tentang menjawab pertanyaan pemrograman dengan sangat membantu .
Adi Inbar
2
Agak lucu bahwa ini dengan jelas mengatur latar belakang menjadi biru dan tidak putih seperti yang diminta.
Konrad Lindenbach
1
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);
rds
sumber
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"));
        }
    });
}
Saleem Kalro
sumber