ステータスバーって時計とか通知とかある領域のことね。
1つのActivityに複数のFragmentが乗る状況があって、Fragmentごとにステータスバーの色を変えたいって要望があった。
調べたら簡単だったので晒しておく。
実装
// ベース
open class BaseFragment : Fragment() {
fun setStatusBarColor(@ColorRes colorId: Int) {
activity?.apply {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = ContextCompat.getColor(this, colorId)
}
}
}
これで、引数で受け取ったcolor.xmlに記載されたidの色にステータスバーの色が変更される。