kotlin 如何在LazyColumn和Column中禁用滚动

vnzz0bqm  于 2022-12-04  发布在  Kotlin
关注(0)|答案(2)|浏览(344)

我想在LazyColumn或Column中禁用滚动。
修饰符.scrollable(状态= rememberScrollState(),启用= false,方向=方向.垂直)

垂直卷动(...)
不起作用。
下面是我的代码:

Column(
        modifier = Modifier
            .fillMaxSize()
        ) {
        Box(
            modifier = Modifier
                .padding(15.dp)
                .height(60.dp)
                .clip(RoundedCornerShape(30))
        ) {
            TitleSection(text = stringResource(id = R.string...))
        }
            LazyColumn(
                contentPadding = PaddingValues(start = 7.5.dp, end = 7.5.dp, bottom = 100.dp),
                modifier = Modifier
                    .fillMaxHeight()
            ) {
                items(categoryItemContents.size) { items ->
                    CategoryItem(categoryItemContents[items], navController = navController)
                }
            }
    }
kuhbmx9i

kuhbmx9i1#

一个简单的方法是将LazyColumn放在一个包含另一个Box的Box中。嵌套的Box可以被组合成拦截滚动,从而防止LazyColumn接收任何滚动事件。要启用滚动,只需防止添加嵌套的Box即可。至于在Column中禁用滚动,这是默认设置。默认情况下,列没有滚动功能:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        startActivity(intent)

        setContent {
            var scrollingEnabled by remember { mutableStateOf(true) }

            Column() {
                Row(verticalAlignment = Alignment.CenterVertically) {
                    Text("Scrolling Enabled")

                    Switch(
                        checked = scrollingEnabled,
                        onCheckedChange = { scrollingEnabled = it }
                    )
                }

                Box(modifier = Modifier.fillMaxSize()) {
                    LazyColumn(Modifier.fillMaxWidth(), state = rememberLazyListState()) {
                        items((1..100).toList()) {
                            Text("$it")
                        }
                    }

                    if (!scrollingEnabled) {
                        Box(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {}
                    }
                }
            }
        }
    }
}
thtygnil

thtygnil2#

对于LazyColumn,您可以使用**userScrollEnabled**参数禁用滚动。

LazyColumn(
    state = state,
    userScrollEnabled = false
){
   //items
}

请注意,即使停用状态,您仍然可以使用状态以程序设计方式卷动。

相关问题