android - Jetpack Compose TextField 中的 android:selectAllOnFocus
问题描述
传统EditText
在 Android 上支持android:selectAllOnFocus属性,该属性会导致其内容在用户单击时被选中,例如单击EditText
.
androidx.compose.material.TextField
在 Jetpack Compose 中使用时如何实现此行为?
解决方案
您可以从中收集焦点状态MutableInteractionSource
并根据它更改选择状态:
var textFieldValue by remember { mutableStateOf(TextFieldValue("Lorem ipsum")) }
val interactionSource = remember { MutableInteractionSource() }
val isFocused by interactionSource.collectIsFocusedAsState()
LaunchedEffect(isFocused) {
textFieldValue = textFieldValue.copy(
selection = if (isFocused) {
TextRange(
start = 0,
end = textFieldValue.text.length
)
} else {
TextRange.Zero,
}
)
}
TextField(
value = textFieldValue,
onValueChange = { textFieldValue = it },
interactionSource = interactionSource,
)
推荐阅读
- python - python PIL显示图像-文件系统错误
- python - 从 Python DataFrame 中选择行
- java - java - 如何检查不在array1中但在java中的array2中的值?
- python - Python Librosa 音频包的使用——从背景噪音中去除人声
- java - 无法从 Java 类访问 Kotlin 接口
- azure-devops-extensions - azure devops 扩展中的 HTML 编码问题
- php - 无法对 jenkins 文件运行 PhpSpec 代码覆盖率测试套件
- reactjs - Typescript:通过添加具有特定命名的新字段来动态扩展界面
- python-3.x - 安装 Pillow 后找不到“图像”?
- python - 我需要将文档字符串句子转换为列表