启用用户交互

Jetpack Compose 允许在 Text 中进行细粒度的交互。文本选择现在更加灵活,可以在可组合布局之间进行。文本中的用户交互与其他可组合布局不同,因为您无法向 Text 可组合的一部分添加修饰符。此页面重点介绍启用用户交互的 API。

选择文本

默认情况下,可组合项不可选择,这意味着用户无法从您的应用中选择和复制文本。要启用文本选择,请使用 SelectionContainer 可组合项包装您的文本元素。

@Composable
fun SelectableText() {
    SelectionContainer {
        Text("This text is selectable")
    }
}

A short passage of text, selected by the user.

您可能希望禁用可选择区域特定部分的选择。为此,您需要使用 DisableSelection 可组合项包装不可选择的部分。

@Composable
fun PartiallySelectableText() {
    SelectionContainer {
        Column {
            Text("This text is selectable")
            Text("This one too")
            Text("This one as well")
            DisableSelection {
                Text("But not this one")
                Text("Neither this one")
            }
            Text("But again, you can select this one")
            Text("And this one too")
        }
    }
}

A longer passage of text. The user tried to select the whole passage, but since two lines had DisableSelection applied, they were not selected.

使用 LinkAnnotation 创建可点击的文本部分

要侦听 Text 上的点击,您可以添加 clickable 修饰符。但是,您可能希望将额外信息附加到 Text 值的特定部分,例如附加到特定单词的 URL,以便在浏览器中打开。在这种情况下,您需要使用 LinkAnnotation,它是一个表示文本可点击部分的注释。

使用 LinkAnnotation,您可以将 URL 附加到 Text 可组合项的一部分,该部分在点击后会自动打开,如下面的代码片段所示。

您还可以配置自定义操作以响应用户点击 Text 可组合项的一部分。在下面的代码片段中,当用户点击“Jetpack Compose”时,将显示一个链接,如果用户点击该链接,则会记录指标。