首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android: enter或tab键仍将值输入到使用jetpack组合的密码输入字段中。

Android: enter或tab键仍将值输入到使用jetpack组合的密码输入字段中。
EN

Stack Overflow用户
提问于 2022-09-19 03:50:34
回答 3查看 183关注 0票数 1

当我输入或标签键仍然输入值到密码输入字段使用jetpack撰写。

下面是我的代码片段:

代码语言:javascript
复制
val (focusRequester) = FocusRequester.createRefs()

TextField(
    value = text,
    onValueChange = {
        text = it
    },
    singleLine = true,
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
    keyboardActions = KeyboardActions(
        onDone = { focusRequester.requestFocus() }
    ),
    modifier = Modifier.onKeyEvent {
        if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER){
            focusRequester.requestFocus()
            true
        }
        false
    }
)

Tab keyenter key是通过Vysor键盘输入的,而不是来自安卓键盘。

这里欢迎任何建议。谢谢!

更新1:

有什么办法,我们可以做所有的功能键,如标准,而不使用下面的代码。

代码语言:javascript
复制
modifier = Modifier.onKeyEvent {
        if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER || it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_TAB) {
           focusManager.moveFocus(FocusDirection.Next)
      }
        false
    }
EN

回答 3

Stack Overflow用户

发布于 2022-09-19 08:09:53

您可以使用regex,类似于:

代码语言:javascript
复制
 val pattern = remember { Regex("^[^\\t\\n]*\$") }
 val focusManager = LocalFocusManager.current

 TextField(
        value = text,
        onValueChange = {
            if (it.isEmpty() || it.matches(pattern)) {
                text = it
            }
        },
        singleLine = true,
        maxLines= 1,
                    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
        keyboardActions = KeyboardActions(
            onDone = { focusManager.moveFocus(FocusDirection.Next) }
        ),
        modifier = Modifier.onKeyEvent {
            if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER || it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_TAB) {
                focusManager.moveFocus(FocusDirection.Next)
            }
            false
        }
   )
票数 2
EN

Stack Overflow用户

发布于 2022-09-19 09:23:12

我认为它应该有助于你清除焦点后,点击键盘完成按钮。

代码语言:javascript
复制
val focusManager = LocalFocusManager.current

TextField(
    value = text,
    onValueChange = {
       text = it
    },
    singleLine = true,
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
    keyboardActions = KeyboardActions(
       onDone = { focusManager.clearFocus() }
    ),
)
票数 0
EN

Stack Overflow用户

发布于 2022-09-19 14:33:33

代码语言:javascript
复制
val (focusRequester) = FocusRequester.createRefs()

TextField(
    value = text,
    onValueChange = {
            if (it.isEmpty() || it.matches(pattern)) {
                text = it
            }
        },
    singleLine = true,
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
    keyboardActions = KeyboardActions(
        onDone = { focusRequester.requestFocus() }
    ),
    modifier = Modifier.onKeyEvent {
        if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER || it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_TAB) {
           focusManager.moveFocus(FocusDirection.Next)
      }
        false
    }
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73768309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档