android - Canvas 上的垂直滚动 (Jetpack Compose)

标签 android canvas scroll android-jetpack-compose android-jetpack

我有一个问题。当我将垂直滚动修改器添加到 Canvas 时,它不起作用。我不明白为什么。代码:

Canvas(modifier = Modifier
            .fillMaxSize()
            .verticalScroll(rememberScrollState())) {
}

内容就被删掉了。如何向 Canvas 添加滚动功能?

最佳答案

为了能够使用verticalScroll或水平滚动内容滚动Composable,子Composables水平滚动的总宽度垂直滚动的总高度应该大于父级。

您可以使用可组合项包裹您的 Canvas ,并将 Canvas 的高度设置为大于父级或屏幕

@Composable
private fun MyCanvas() {
    Box(modifier = Modifier.verticalScroll(rememberScrollState())) {
        Canvas(
            modifier = Modifier
                .border(3.dp, Color.Green)
                .fillMaxWidth()
                .height(2000.dp)

        ) {
            drawCircle(Color.Red)
        }
    }
}

enter image description here

其他选项是使用拖动或任何返回触摸位置变化并翻译 Canvas 内容的手势。

Canvas(
    modifier = Modifier
        .border(3.dp, Color.Green)
        .fillMaxWidth()
) {

    // You need to change left or top on touch
    // Static values are for demonstration
    translate(left = 0f, top = -1000f) {
        drawCircle(Color.Red)
    }
}

关于android - Canvas 上的垂直滚动 (Jetpack Compose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73223327/

相关文章:

javascript - Kineticjs - 创建自己的线条样式

ios - 弹出 View Controller 后 UITableViewController 奇怪的行为

java - 把一个JScrollPane滚动条的bar放在XXX处,不用 "flashing"

java - AutoCompleteTextView 不显示任何下拉列表

android - 如何在android中的单个 Activity 中处理多个 Intent ?

Android如何管理不同客户端的项目名称和 Logo 以及应用程序图标

android - Mono for Android - 纵向所有 Activity

javascript - 如何在位置上定向自定义 Canvas 形状

javascript - 使用 Protractor 测试 Canvas 绘图

Python Tkinter 文本滚动超过最后一行