android - Jetpack Compose - 在文本字段中捕获关键事件

标签 android android-jetpack-compose android-jetpack-compose-list

我想在待办事项列表中创建一个文本字段,其中 when the user presses backspace on an empty text field , it removes itself从列表中可以看出,做起来很简单!
Jetpack Compose ,如果关键事件是可编辑的,Core Text Field 不会将其关键事件传播给父可组合项/修饰符~~写在他们的代码中
所以我尝试了这个,但它没有按预期工作

Modifier.onKeyEvent {
     Log.d("BL_KeyEvent",it.type.toString())
     if (it.key.keyCode == Key.Backspace.keyCode) {
           if (item.text.isEmpty()) {
              onBackspaceRemove()
           }
       }
       false
     }
我只是想知道如何实现它,因为 CoreTextField 是内部的,我无法在文本字段中捕获关键事件

最佳答案

取消自您上次尝试 @Waqas Tahir 以来是否已解决此问题,但我使用的是 ComposeUI v1.0.2,以下对我有用:

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun aTextFieldWithOnBackspacePressedAction() {
    // this should be hoisted to ViewModel
    var text by remember { mutableStateOf("") }

    BasicTextField(
        value = text,
        // this also should be hoisted to ViewModel
        onValueChange = { text = it },
        modifier = Modifier
            .onKeyEvent { event: KeyEvent ->
                // handle backspace key
                if (event.type == KeyEventType.KeyUp &&
                    event.key == Key.Backspace &&
                    text.isEmpty()
                // also any additional checks of the "list" i.e isNotEmpty()
                ) {
                    // TODO remove from list
                    return@onKeyEvent true
                }
                false
            }
    )
}

关于android - Jetpack Compose - 在文本字段中捕获关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68861843/

相关文章:

android - 由 : org. gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException 引起: ':app:debugRuntimeClasspath'

android - LazyColumnFor 中的 OnScrolled (Jetpack Compose)

android - _uiState.value = uiState.value.copy() 不会导致重组

java - 我可以用 Java 编写 Jetpack Compose 组件吗?

android - Jetpack compose 中如何让懒惰的列项占据整个高度?

android - 有没有办法对齐 LazyColumn 底部的项目?

android - 如何配置 Tensorflow 对象检测 Android 演示以使用 Inception v2

java - 将对象添加到 JSONObj

php - Android json php mysql 仅返回单行

java - Android:是否可以在另一个手指已经触摸屏幕时处理点击?