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

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

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>

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


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.


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"

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

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

bekerja untukku. Terima kasih.


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(...);

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"));
        }
    });
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.