提问人:imansdn 提问时间:11/7/2023 最后编辑:imansdn 更新时间:11/7/2023 访问量:43
在 Compose LazyColumn 中启用文本选择 by selection 容器
Enabling Text Selection in Compose LazyColumn by selection container
问:
我以前使用 WebView 来显示长文本,并根据某些业务逻辑设置每个单词的样式。但是,我最近将此 HTML 内容转换为句子列表,并利用 LazyColumn 在我的 Compose 应用程序中呈现它。
在之前的实现中,我非常珍视的功能之一是能够选择文本并利用弹出选项进行复制或共享等操作。
我尝试将 LazyColumn 包装在 Jetpack Compose 的 SelectionContainer 中,但它目前阻止我在列表中的不同项目中选择文本。
我很好奇是否有办法在我的新 Compose 结构中保留相同的文本选择行为。任何建议或见解将不胜感激。
到目前为止,我已经尝试了这些:
LazyColumn(
modifier = Modifier.fillMaxSize(),
content = {
items(sentenceList) { index ->
SelectionContainer {
Text(
text = sentenceList[index]
)
}
}
}
)
还有这个:
SelectionContainer {
LazyColumn(
modifier = Modifier.fillMaxSize(),
content = {
items(sentenceList) { index ->
Text(
text = sentenceList[index]
)
}
}
)
}
更新1:
我应该提一下,第二个选项确实有效,但是当您尝试上下滚动然后再次尝试长按文本选择时,会出现一个问题;奇怪的是,它停止工作了。
答:
0赞
Chirag Thummar
11/7/2023
#1
我想你可能错过了.我已经尝试了以下代码,它对我有用。State
LazyColumn
试试这个
@Preview(showBackground = true)
@Composable
fun TestPreview() {
LazyColumn(
state = rememberLazyListState(),
modifier = Modifier.fillMaxSize(),
content = {
items(65) { index ->
SelectionContainer {
Text(
text = "I have pasted long text for text selection demo."
)
}
}
}
)
}
评论