[Android] 006. material3.MaterialTheme

Templateでui.theme配下にカスタムテーマが自動生成されます

自動生成のコードを修正

新規作成にも記載してますがTheme.ktは非推奨メソッドを使用しているので
以下の修正と不要なimportの削除が必要です

if (!view.isInEditMode) {
    /* getting the current window by tapping into the Activity */
    val currentWindow = (view.context as? Activity)?.window ?: throw Exception("Not in an activity - unable to get Window reference")

    SideEffect {
        /* the default code did the same cast here - might as well use our new variable! */
        currentWindow.statusBarColor = colorScheme.primary.toArgb()
        /* accessing the insets controller to change appearance of the status bar, with 100% less deprecation warnings */
        WindowCompat.getInsetsController(currentWindow, view).isAppearanceLightStatusBars = darkTheme
    }
}

アプリ全体のフォント/色の設定

Type.kt アプリ全体のフォント設定
Color.kt Color定義

StatusBarの背景色

上記コードにあるようにcurrentWindow.statusBarColorで変更

topbarの色は一見それっぽいcurrentWindow.navigationBarColorで変更できない
currentWindow.navigationBarColorは画面の一番下の横線の領域(機種によっては無いかも)
TopAppBarの背景色はTopAppBarのcolors(TopAppbarColors)で以下のように指定

colors = TopAppBarDefaults.centerAlignedTopAppBarColors(containerColor = Color.Blue),

※ StatusBarの色変更補足
Theme以外で変更は以下

// ステータスバーの色はThermeで設定されているActivityのwindowのsetStatusBarColorで設定されている
// 上記を設定している場合は以下で色は変わらない
// com.google.accompanist:accompanist-systemuicontroller
val systemUiController = rememberSystemUiController()
SideEffect {
    systemUiController.setStatusBarColor(SkyBlue)
}

Android Studio Dolphin 2021.3.1 Patch 1 built on September 30, 2022

スポンサーリンク
タイトルとURLをコピーしました