Untuk benar-benar menjawab pertanyaan: Gunakan invalidate ():
public void invalidate () Sejak: API Level 1
Batalkan seluruh tampilan. Jika tampilan terlihat, onDraw (Kanvas) akan dipanggil di beberapa titik di masa depan. Ini harus dipanggil dari utas UI. Untuk menelepon dari utas non-UI, panggil postInvalidate ().
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
Sekarang, ketika Kegiatan dilanjutkan, itu membuat setiap Tampilan untuk menggambar sendiri. Tidak boleh ada panggilan untuk membatalkan (). Untuk menerapkan tema, pastikan Anda melakukannya sebelum Lihat apa pun diambil, yaitu sebelumnyasetContentView(R.layout.mainscreen);
public void setTheme (int resid) Sejak: API Level 1
Tetapkan tema dasar untuk konteks ini. Perhatikan bahwa ini harus dipanggil sebelum tampilan ditampilkan dalam Konteks (misalnya sebelum memanggil setContentView (View) atau mengembang (int, ViewGroup)).
Referensi dokumen API ada di sini: http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
Karena metode onDraw () berfungsi pada Views yang sudah dipakai, setTheme tidak akan berfungsi. Saya sendiri tidak punya pengalaman dengan tema, tetapi dua opsi alternatif yang bisa saya pikirkan adalah:
- panggil setTheme di onCreate () sebagai gantinya, atau
- ulang setContentView (R.layout.mainscreen); untuk memaksa mengembalikan semua tata letak.