如何在 Compose 中防止 BasicTextField 的拖动事件

问题描述 投票:0回答:1

如何防止 BasicTextField 的拖动功能。我不希望用户能够拖动文本并使其不可见。在具有我要禁用的功能的视频下方。

这是我的代码:

@Composable
fun MyScreen() {
  var input by remember {
    mutableStateOf("")
  }
  Column(Modifier.padding(16.dp).fillMaxWidth()) {
    BasicTextField(
      modifier = Modifier.align(CenterHorizontally).width(IntrinsicSize.Min),
      value = input,
      singleLine = true,
      onValueChange = { input = it },
      textStyle = MaterialTheme.typography.h3,
      decorationBox = { innerTextField ->
        if (input.isEmpty()) {
          Text(
            text = "0",
            style = MaterialTheme.typography.h3,
            color = MaterialTheme.colors.onBackground.copy(alpha = 0.3f)
          )
        }
        innerTextField()
      }
    )
  }
}
android kotlin android-jetpack-compose android-jetpack android-compose-textfield
1个回答
0
投票

为了防止拖动功能,您可以使用

pointerInput
修饰符来拦截和消耗任何可能触发拖动行为的触摸事件。

您可以像这样更新您的代码段:

BasicTextField(
      modifier = Modifier.align(CenterHorizontally)
        .width(IntrinsicSize.Min)
        // Add the pointerInput modifier to intercept touch events
        .pointerInput(Unit) {
          detectDragGestures { _, _ -> }
        },
      value = input,
      singleLine = true,

pointerInput
块中,我们使用
detectDragGestures
函数来拦截任何拖动手势并在不执行任何操作的情况下使用它们。这有效地禁用了
BasicTextField
.

的拖动行为
© www.soinside.com 2019 - 2024. All rights reserved.