Jetpack compose:设置 ImeAction 不会关闭或更改键盘焦点

2024-03-20

我正在使用 Jetpack 撰写1.0.0-alpha07。我制作了一个包含两个的登录屏幕TextField使用其他可组合项进行定制。

然而,设置ImeAction in keyboardOptions似乎不起作用。例如ImeAction.Next不将焦点移动到下一个文本字段。我认为我应该做点什么来使其成为可能,但没有任何文件或文章简短地谈论过ImeOptions。这是我的屏幕代码:

Login可组合:

EmailEdit(onChange = { email.value = it })
PasswordEdit(onChange = { password.value = it })

电子邮件编辑:

@Composable
fun EmailEdit(onChange: (String) -> Unit) {
    val t = remember { mutableStateOf("") }
    TextField(
        value = t.value,
        onValueChange = { value ->
            t.value = value
            onChange(value)
        },
        leadingIcon = { Icon(asset = Icons.Default.Email) },
        label = { Text(text = "Email") },
        maxLines = 1,
        keyboardOptions = KeyboardOptions(
            imeAction = ImeAction.Next, // ** Go to next **
            keyboardType = KeyboardType.Email
        ),
        visualTransformation = VisualTransformation.None
    )
}      errorHint = "Not a valid email"
    )
}

PassEdit:

@Composable
fun PasswordEdit(onChange: (String) -> Unit) {
    val t = remember { mutableStateOf("") }
    TextField(
        value = t.value,
        onValueChange = { value ->
            t.value = value
            onChange(value)
        },
        leadingIcon = { Icon(asset = Icons.Default.Security) },
        label = { Text(text = "Password") },
        maxLines = 1,
        keyboardOptions = KeyboardOptions(
            imeAction = ImeAction.Done, // ** Done. Close the keyboard **
            keyboardType = KeyboardType.Text
        ),
        visualTransformation = PasswordVisualTransformation()
    )
}

去表演Done and Next我应该添加什么代码?


您可以使用

  • keyboardOptions:包含配置的软件键盘选项,例如KeyboardType and ImeAction
  • keyboardActions当输入服务发出 IME 操作时,会调用相应的回调

For Done:

您可以使用LocalSoftwareKeyboardController https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardController与键盘交互。

keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
    onDone = {keyboardController?.hide()}
)

For Next:

keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
    onNext = { focusRequester.requestFocus() }
)

就像是:

val (focusRequester) = FocusRequester.createRefs()
val keyboardController = LocalSoftwareKeyboardController.current

TextField(
    value = text,
    onValueChange = {
        text = it
    },
    label = { Text("Label") },
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
    keyboardActions = KeyboardActions(
        onNext = { focusRequester.requestFocus() } 
    )
)

TextField(
    value = text,
    onValueChange = {
        text = it
    },
    modifier = Modifier.focusRequester(focusRequester),
    label = { Text("Label") },
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
    keyboardActions = KeyboardActions(
        onDone = { keyboardController?.hide() }
    )
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetpack compose:设置 ImeAction 不会关闭或更改键盘焦点 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • 如何更新 Firebase 中的节点密钥?

    如何重命名14 04 2017 node 没有用于重命名节点的 API 您必须获取节点的值 使用新名称将其保存到数据库并删除旧节点
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 在 Google Analytics 中跟踪应用程序版本

    我正在使用谷歌分析模块 https marketplace appcelerator com apps 5081 2014113336 https marketplace appcelerator com apps 5081 2014113
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项

随机推荐

  • 按位左移函数

    我正在尝试实现一个左旋转函数 将整数 x 左旋转 n 位 例如 rotateLeft 0x87654321 4 0x76543218 法律行动 gt 到目前为止我有这个 int rotateLeft int x int n return x
  • 使用 Ant 将外部 jar 文件包含在新的 jar 文件构建中

    我刚刚 继承 了一个 Java 项目 而不是来自 Java 背景 有时我会有点迷失 Eclipse 用于在开发过程中调试和运行应用程序 我通过 Eclipse 成功创建了一个 jar 文件 其中 包含 所有必需的外部 jar 如 Log4J
  • sqlite 删除最后一行刷新不起作用

    我的列表视图上有一个长按选项 它将删除长按的数据库条目 删除确实有效 如果我退出应用程序并返回 我会看到 无行 消息 完美的 在我的代码中 我首先调用 DBadapter 方法来删 除一行 然后 我在 dbadapter 中调用 fetch
  • 如何在 python 中录制不确定持续时间的音频并允许暂停和恢复功能?

    我正在编写一个 Python 应用程序来将音频录制为 WAV 文件 直到用户按下pause or stop 暂停音频后 用户还应该能够resume记录 此外 应用程序无法预先知道录音会持续多长时间 应用程序应避免内存不足 因为录制可能会很长
  • 获取 DER 编码的公钥

    使用 BounceCastle 我可以运行以下代码 它生成密钥对并返回 ASN 1 DER 编码格式 Generate new key var generator new RsaKeyPairGenerator generator Init
  • 如何在 Dynamics CRM 2016 中使用 ExecuteWorkflowRequest 调用带有参数的操作?

    Context 我可以使用 ExecuteWorkflowRequest 成功调用操作 其中调用的操作没有参数 var request new ExecuteWorkflowRequest EntityId myEntityId Workf
  • 使用 php://memory 包装器会导致错误

    我试图通过添加一个方法来扩展 Worx 的 PHP 邮件程序类 该方法允许我使用字符串数据而不是文件路径添加附件 我想出了这样的事情 public function addAttachmentString string name encod
  • Mac OS X - 没有菜单的应用程序?

    我想构建一个没有菜单栏 停靠栏图标或位于应用程序切换器中的应用程序 基本上 它应该像 Quicksilver 一样 我通过全局热键 例如 Safari 激活它 然后会出现一个小窗口 但 Safari 不会变得不活动 也不会显示不同的菜单栏
  • MediaPlayer getDuration 返回 -1412558917

    我完全迷失了 我发现代码非常简单 并且在文档中没有找到任何返回这么大负数的原因 代码如下 private int getDuration String audioPath throws Exception mediaPlayer new M
  • iOS 6.0.1 模拟器

    我已经安装了XCode 4 5 2 它只有 6 0 的模拟器 我想要 iOS 6 0 1 iPad 模拟器 有人可以帮助我如何获得 6 0 1 版本吗 我检查了 mac 应用商店的更新 它是最新的 XCode 如果我安装 Xcode 4 6
  • 如何覆盖 Angular 中的现有组件?

    我正在尝试覆盖角度中的现有组件 我原来的组件是 Component selector app orginal templateUrl orginal component html styleUrls orginal component cs
  • 使用 StructureMap 创建插件扫描器

    我正在尝试为支付网关实现编写一个 StructureMap 插件扫描仪 我在外部库中创建了 IPaymentGateway 接口 我创建了 IPaymentGateway 的多个实现 并将这些 dll 放在我的 C Extensions 文
  • 比较 SSIS 包代码...有什么建议吗?

    我已经遇到了不可避免的情况 我必须对 SSIS 包的两个版本中的代码进行比较 除了我现在要打开 2 个 VS 实例并逐个框 逐个变量地检查它之外 您还成功使用过什么 注意 就我而言 比较重要的事情是 变量 执行SQL任务中的代码 任务顺序
  • 如何将参数从 xaml 标记文件传递到 UserControl 构造函数?

    我有一个 StepsWnd 窗口 其中使用了两次 UserControl StepProp 并在单独的文件中声明
  • Spring boot - 启动时禁用 Liquibase

    我希望有液体碱配置了我的春季启动应用程序 所以我添加了依赖项pom xml并将路径设置为master xml in application properties 这工作正常并且春季启动 runs 液体碱在启动时 问题是现在我想跑液体碱手动
  • Android Studio:导航 xml 编辑和设计视图出现问题

    我们一直在项目中使用导航组件 但偶然发现了一个似乎是我们的项目和 JetBrains Android 插件特有的问题 我无法确定它开始发生的确切时间点 但我在 AS 3 2 发布后注意到了它 该项目构建得很好 但是在编辑导航 XML 时 自
  • 自动装配依赖项注入失败;

    我正在开发一个小型 Java EE Hibernate Spring 应用程序 出现错误 Error creating bean with name articleControleur Injection of autowired depe
  • Select2 onselect一个选项将选择所有其他选项

    我在此提供了选择 2JSFIDDLE https jsfiddle net kLw8rnre 2 我如何选择一个期权呼叫All它将选择该选择字段中除自身之外的所有选项 这意味着All选项更像是 全选 按钮 并取消选择All 将取消选择所有选
  • Log4J SocketAppender 吞下来自远程客户端的调试信息

    我已经配置了一个简单套接字服务器 http logging apache org log4j 1 2 apidocs org apache log4j net SimpleSocketServer html public class Sim
  • Jetpack compose:设置 ImeAction 不会关闭或更改键盘焦点

    我正在使用 Jetpack 撰写1 0 0 alpha07 我制作了一个包含两个的登录屏幕TextField使用其他可组合项进行定制 然而 设置ImeAction in keyboardOptions似乎不起作用 例如ImeAction N