Пока что у меня есть простой Scafold с прозрачными ActionBar и StatusBar, и мой контент прекрасно прокручивается под обеими полосами, включая scrollBehavior, чтобы изменить верхний цвет на прозрачный черный. Вот соответствующий код:
Основная деятельность
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
...
Главный составной
...
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
TopAppBar(
title = {
Text(currentScreen.route)
},
scrollBehavior = scrollBehavior,
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color.Transparent,
scrolledContainerColor = Color.Black.copy(alpha = 0.75f),
navigationIconContentColor = Color.Black,
titleContentColor = MaterialTheme.colorScheme.primary,
actionIconContentColor = Color.Black
)
)
},
) { padding ->
Box {
Background()
MainNavHost(
modifier = Modifier.fillMaxSize(),
navController = navController,
contentPadding = padding
)
}
}
Это работает, и я доволен результатом, но было бы здорово, если бы существовал способ применить эффект размытия к содержимому, которое скрывается под ActionBar, аналогично тому, что iOS делает изначально.
Есть ли способ добиться такого эффекта?





Вы можете использовать модификатор blur, начиная с Android 12. Для резервного копирования рассмотрите возможность использования сторонних библиотек, таких как эта.
Прохладный. Возможно, вы захотите поместить решение в ответ с примером кода для дальнейшего использования.
Да, вы правы :)
Наконец, библиотека Haze подошла именно к моему сценарию.
Спасибо @AdnanHabib, я знаю о модификаторе
blur, но мой вопрос касается размытия содержимого под представлением, а не содержимого внутри самого представления. Я тоже нашелCloudy, который выглядел многообещающе, но в конце концов остановился наHaze(chrisbanes.github.io/haze/usage), который довольно просто решает проблему с верхней панелью.