最近,我一直在尝试将 Material3 与 Jetpack Compose 结合使用,并且我的一个屏幕中需要一个抽屉和一个支架。遗憾的是Scaffold
Material3中还没有支持抽屉,但幸运的是ModalNavigationDrawer
可以找到替代品。但是,使用 ModalNavigationDrawer 时,抽屉打开时抽屉的内容始终覆盖整个屏幕,并且我找不到任何参数将其宽度设置为正确的值,例如屏幕宽度的一半。我有什么办法可以解决这个问题吗?我的 compose 版本是1.2.0-beta02,material3 版本是1.0.0-alpha12。
android android-jetpack-compose android-jetpack-compose-material3
我有一个lazyColumn从viewModel接收列表来创建项目:
@Composable
fun HomeList(
modifier: Modifier = Modifier,
dataList: List<Data>,
listState: LazyListState = rememberLazyListState(),
onClickItem: (Data) -> Unit,
onLongPressItem: (Data) -> Unit
) {
LazyColumn(
modifier = modifier,
state = listState
) {
items(dataList) { data ->
Log.d(TAG, "HomeList: add data $data")
HomeListItem(
data = data,
onClick = onClickItem,
onLongPressed = onLongPressItem
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
该列表包装在 viewModel 中的 stateFlow 中,并在 Composable 中收集为状态:
// viewModel
...
private val _uiState = MutableStateFlow(
HomeUiState(
...
homeList = listOf()
)
)
val uiState …
Run Code Online (Sandbox Code Playgroud)