[Android]StatusBar(ステータスバー)の色をコードから変更する

ステータスバーって時計とか通知とかある領域のことね。

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の色にステータスバーの色が変更される。

タイトルとURLをコピーしました