在Android中如何在选择文本字段时自动选择该文本字段的整个值?

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

在 Android 中选择文本字段时如何选择该文本字段的整个值?

我能想到的最常见的示例是在计时器应用程序中使用此功能。计时器最初设置为零,通常格式为

00
。当您选择保存计时器值的文本字段时,将选择整个值或
00
。当您按下键盘按键时,整个值都会被您的输入替换。无需手动选择和使用退格键。

我不知道如何实现这个功能。

这是我开发的示例应用程序的代码,尝试实现该功能。

// This variable holds the value of the text field. It is initially set to "initial text".
var text by remember { mutableStateOf("initial text") }

// This variable holds the state of the enabled parameter for the text field.
var isTextFieldEnabled by remember { mutableStateOf(false) }

/* This is the conditional that selects the full text value when the button is enabled. 
   That's what it is supposed to do but it's not working */
if (isTextFieldEnabled) {
    TextRange(0, text.length)
}

// This is the layout of the application. The content is centered horizontally and vertically.
Column(
   Modifier.fillMaxSize(),
   horizontalAlignment = Alignment.CenterHorizontally,
   verticalArrangement = Arrangement.Center
) {

   // This is the text field that I wish to select the total value of.              
   TextField(
      value = text,
      onValueChange = { text = it },
      enabled = isTextFieldEnabled,
      modifer = Modifier.clickable { isTextFieldEnabled = true }
)
}

这就是全部代码。正如您所看到的,文本字段是可单击的,当单击它时,它将

isTextFieldEnabled
设置为 true,并激活应该使用
TextRange
选择全文的条件。然而这不起作用。如何修改代码以允许我在问题标题中描述的内容。

android text android-jetpack-compose textfield
1个回答
0
投票

这可能有效,所以我在单击字段本身时选择所有文本字段,希望这有帮助

 var text by remember { mutableStateOf(TextFieldValue("initial Text")) }

        TextField(value = text, onValueChange = { text = it }, modifier = Modifier.clickable {
            text = text.copy(
                selection = TextRange(0, text.text.length)
            )
        })
© www.soinside.com 2019 - 2024. All rights reserved.