Saya memiliki MainActivity dengan banyak Fragmen dan dalam satu Fragmen tertentu saya ingin menggambar di belakang bilah sistem, jadi saya menerapkan flag berikut saat runtime
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
Yang saya inginkan sekarang adalah ketika pengguna keluar dari Fragmen ini dan memasuki yang lain untuk menghapus tanda itu sehingga tidak ada konten di balik bilah status. Saya mencoba meneruskan null sebagai argumen ke metode setFlags() tetapi itu memberikan kesalahan. Saya telah mencari metode remove() atau unSet() tetapi tidak ada. Jadi bagaimana saya harus menghapus bendera itu untuk Fragmen lain?
Solusi
Cara yang sudah usang seperti ini
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
Cara terbaru
Gunakan Window#setStatusBarColor(int)
dengan warna setengah transparan sebagai gantinya.
Setelah mendeklarasikan warna dengan nilai hex #6F000000, maka dalam kode:
getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.my_color))