Sae*_*adi 8 android android-compose-textfield
我有一个lazyColumn,我想在列中使用它,但出现以下错误并且应用程序崩溃:
不允许在相同方向的布局中嵌套可滚动的布局,例如 LazyColumn 和 Column(Modifier.verticalScroll())。如果您想在项目列表之前添加标题,请查看 LazyColumn 组件,该组件具有 DSL api,允许首先通过 item() 函数添加标题,然后通过 items() 添加项目列表
lazyColumn 代码,我在此代码中有一个列表:
@Composable
fun UpScreenSection(
modifier: Modifier,
state: ProfileState,
viewModel: ProfileViewModel
) {
Spacer(modifier = Modifier.size(24.dp))
Column(
modifier = modifier
.fillMaxSize()
.padding(24.dp)
) {
if (!state.items.isNullOrEmpty()) {
Box(
modifier = modifier
.fillMaxSize()
) {
LazyColumn(modifier = modifier.fillMaxSize()) {
items(state.items) { item ->
ProfileListItems(item = item, onItemClick = {
//TODO Navigate to specific screen
when (it.id) {
1 -> {
}
2 -> {
}
3 -> {
}
4 -> viewModel.navigate(ReferAFriendDestination.route())
}
})
}
}
}
}
}
Spacer(modifier = Modifier.size(24.dp))
}
Run Code Online (Sandbox Code Playgroud)
上述代码在以下可组合代码中使用:
@Composable
fun ProfileContentSection(
modifier: Modifier = Modifier,
viewModel: ProfileViewModel
) {
val context = LocalContext.current
val scrollState = rememberScrollState()
Box(
modifier = modifier
.fillMaxSize()
) {
val state = viewModel.state.value
Column(
modifier = modifier
.fillMaxSize()
.verticalScroll(state = scrollState)
) {
AccountNameSection(modifier = modifier, viewModel = viewModel)
UpScreenSection(modifier, state, viewModel) // used above block codes
DownScreenSection(modifier, context)
}
if (state.error.isNotBlank())
SimpleSnackbar(
text = state.error,
modifier = modifier.align(Alignment.BottomCenter)
)
if (state.isLoading)
Loading(modifier = modifier.align(Alignment.BottomCenter))
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何修复这个错误?
注意:我想要一个可滚动屏幕,其中包含适用于小型设备的列表
Sae*_*adi 11
我找到了解决方案。我必须将 LayzyColumn 之外的每个视图移到其中。
例子:
@Composable
fun SampleScreen(){
LazyColumn{
item {
// other views
}
items(state.items){listItem ->
//Load list data
}
item {
//other views
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,我将拥有一个具有可滚动视图的屏幕。
归档时间: |
|
查看次数: |
8916 次 |
最近记录: |