Изменение цвета строки состояния в Jetpack Compose

May 08 2023
Каждая решенная проблема — это усвоенный урок. #AndroidTips #SolvedProblemToday Изменение цвета строки состояния — распространенная задача при разработке приложений для Android.

Каждая решенная проблема — это усвоенный урок. #AndroidTips #решеннаяпроблемасегодня

Реактивный ранец

Изменение цвета строки состояния — распространенная задача при разработке приложений для Android. С Jetpack Compose это простой процесс, который можно выполнить всего несколькими строками кода.

Изменение цвета строки состояния в Jetpack Compose

Чтобы изменить цвет строки состояния в Jetpack Compose, мы можем использовать SystemUiControllerпредоставленный пакетом androidx.compose.ui.platform.

Во-первых, нам нужен accompanist-systemuicontroller. Добавьте зависимость в файл build.gradle вашего приложения:

dependencies {
    implementation "com.google.accompanist:accompanist-systemuicontroller:x.y.z"
}

Нам нужно создать компонуемую функцию, которая будет устанавливать цвет строки состояния (создайте класс SetStatusBarColor.kt ). Вот пример:

@Composable
fun SetStatusBarColor(color: Color) {
    val systemUiController = rememberSystemUiController()
    SideEffect {
        systemUiController.setSystemBarsColor(color)
    }
}

Затем мы можем вызвать эту функцию в нашей основной @Composableфункции в MainActivity , например:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            YourAppNameTheme {
                StatusBarColor(color = MaterialTheme.colors.primary)
                // Other content here, example :
                Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) {
                    YourAppClass()
                }
            }
        }
    }
}

Вот и все! С помощью всего нескольких строк кода мы можем легко изменить цвет строки состояния в нашем приложении для Android на основе Jetpack Compose.

Использование SystemUiControllerне ограничивается только изменением цвета строки состояния, его можно использовать и для других конфигураций пользовательского интерфейса системы, таких как панель навигации, иммерсивный режим и многое другое.

В моем репозитории github.com/im-o есть приложение sampel, использующее компоновку джетпака .

Сделано и почищено, спасибо!