Сначала строка состояния и верхняя панель приложений занимают некоторое пространство:
Код: Выделить всё
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
window.statusBarColor = Color.Transparent.toArgb()
window.navigationBarColor = Color.Transparent.toArgb()
setContent {
MinimalTheme {
//val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState())
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState())
Scaffold(
modifier = Modifier
.fillMaxSize()
.nestedScroll(scrollBehavior.nestedScrollConnection),
containerColor = Color.Magenta,
topBar = {
TopAppBar(
title = { Text("My App") },
modifier = Modifier
.windowInsetsPadding(WindowInsets.statusBars.only(WindowInsetsSides.Horizontal)) // or .Top
.fillMaxWidth(),
//.height(80.dp),
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color.Red,
titleContentColor = Color.White
),
scrollBehavior = scrollBehavior
//windowInsets = TopAppBarDefaults.windowInsets.only(WindowInsetsSides.top)
)
}
) { scaffoldInnerPadding ->
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(scaffoldInnerPadding)
.background(Color.Gray),
contentPadding = PaddingValues(16.dp)
) {
items(50) { index ->
Text(
"Item $index",
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp),
color = Color.Black
)
}
}
}
}
}
}
}
@Composable
fun MinimalTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val view = LocalView.current
if (!view.isInEditMode) {
SideEffect {
Log.d("TransparencyTest", "MinimalTheme SideEffect - START")
val window = (view.context as? android.app.Activity)?.window
if (window == null) {
Log.e("TransparencyTest", "Window is NULL in SideEffect")
return@SideEffect
}
window.statusBarColor = android.graphics.Color.TRANSPARENT // Use framework's transparent
Log.d("TransparencyTest", "statusBarColor RE-SET TO TRANSPARENT in SideEffect")
val insetsController = WindowInsetsControllerCompat(window, view)
insetsController.isAppearanceLightStatusBars = !darkTheme
Log.d("TransparencyTest", "isAppearanceLightStatusBars SET TO ${!darkTheme}")
insetsController.isAppearanceLightNavigationBars = !darkTheme
Log.d("TransparencyTest", "MinimalTheme SideEffect - END")
}
}
MaterialTheme(
colorScheme = if (darkTheme) darkColorScheme() else lightColorScheme(),
typography = Typography(),
content = content
)
}
< /code>
Изменить: я думаю, что комментарий Эдрика, по крайней мере, часть решения. Установка LazyColumn Подробнее здесь: https://stackoverflow.com/questions/797 ... -extending