ITmob-Ly
发布于 2023-07-03 / 239 阅读
0

在 Jetpack Compose 中如何使用剪贴板?

How to use ClipboardManager in Jetpack Compoase


Android 中通过 ClipboardManager 与系统的剪贴板进行交互,如果需要在 Jetpack Compose 中使用它,要使用 LocalClipboardManager。首先需要获取一个 ClipboardManager 实例,可以通过在 @Composable 函数中调用 LocalClipboardManager.current 来获得。

复制

示例,如何将文本复制到剪贴板:

@Composable
fun CopyToClipboard() {
    val clipboardManager = LocalClipboardManager.current
    val text = remember { mutableStateOf("") }

    Column {
        TextField(
            value = text.value,
            onValueChange = { text.value = it },
            label = { Text("https://itmob.cn (Text to copy)") }
        )
        Button(onClick = { clipboardManager.setText(AnnotatedString(text.value)) }) {
            Text("Copy to clipboard")
        }
    }
}

点击 “Copy to clipboard” 按钮时,将使用 clipboardManager.setText()TextField 中的文本复制到系统的剪贴板。

粘贴

示例,如何从剪贴板粘贴文本:

@Composable
fun PasteFromClipboard() {
    val clipboardManager = LocalClipboardManager.current
    val text = remember { mutableStateOf("") }

    Column {
        Text(text = text.value)
        Button(onClick = {
            val dataFromClip = clipboardManager.getText()
            if (dataFromClip != null) {
                text.value = dataFromClip.text
            }
        }) {
            Text("Paste from clipboard")
        }
    }
}

点击 “Paste from clipboard” 按钮时,调用 clipboardManager.getText() 获取剪贴板的内容,并用它来更新 Text 可组合项的值。