我需要一个可以垂直和水平滚动的组件.

以下是我迄今为止所做的:

@Composable
fun Screen() {
    val scope = rememberCoroutineScope()
    val scrollOffset = remember {
        mutableStateOf(value = 0F)
    }
    LazyColumn(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.spacedBy(space = 16.dp)
    ) {
        items(10) {
            SimpleRow(
                onScrollOffsetChange = {
                    scrollOffset.value = it
                }
            )
        }
    }
}

@Composable
private fun SimpleRow(
    onScrollOffsetChange: (Float) -> Unit,
) {
    val lazyRowState = rememberLazyListState()
    LazyRow(
        modifier = Modifier.fillMaxWidth(),
        state = lazyRowState
    ) {
        item {
            Text(
                text = "firstText"
            )
        }
        for (i in 1..30) {
            item {
                Text(text = "qwerty")
            }
        }
    }
}

当这SimpleRow个中的任何一个被滚动时,我想把所有的SimpleRow个一起滚动.

我不知道我有多少个SimpleRow,因为它们来self 们的服务器.

有什么组合或技巧可以帮我吗?

推荐答案

可以在水平和垂直滚动的列中使用多行,如下所示:

@Composable
fun MainContent() {
    val scrollStateHorizontal = rememberScrollState()
    val scrollStateVertical = rememberScrollState()

  Column(
      modifier = Modifier
          .fillMaxSize()
          .verticalScroll(state = scrollStateVertical)
          .horizontalScroll(state = scrollStateHorizontal)
  ) {
      
      repeat(40){ c ->
          Row {
              repeat(40){ r ->
                  Item("col: $c | row: $r")
              }
          }
      }
      
  }
}

@Composable
fun Item(text: String) {
    Text(
        modifier = Modifier
            .padding(5.dp)
            .background(Color.Gray),
        text = text,
        color = Color.White
    )
}

sample image

Kotlin相关问答推荐

Kotlin协程挂起继续线程

为什么在Spring中,对事务性方法调用的非事务方法调用仍然在事务中运行?

"Kotlin中的表达式

为何Kotlin标准库中的AND和OR函数不能像&&和||一样进行短路运算?

Kotlin 中的 maxOf() 和 max() 方法有什么区别?

如何在 Android Jetpack Compose 中的画布上绘制一侧加厚的描边?

Kotlin 列表扩展功能

将子元素放在一个列表中

异常传播如何在 CoroutineScope.async 上工作?

Android数据绑定在自定义视图中注入ViewModel

在 Scaffold Jetpack Compose 内的特定屏幕上隐藏顶部和底部导航器

Kotlin 创建snackbar

Kotlin:什么是 kotlin.String!类型

Android Studio 和 Kotlin:Unresolved reference: also

Kotlin:使用Gradle进行增量编译

将字符串编码为Kotlin中的UTF-8

Kotlin - 错误:Could not find or load main class _DefaultPackage

如何在 IntelliJ IDEA 中禁用粘贴时将 Java 转换为 Kotlin?

带有注释为@RegisterExtension的字段的 JUnit 5 测试在 Kotlin 中不起作用

如何在 Kotlin 中定义新的运算符?