现象
最近在使用Jetpack中的compose替代以前的View,在操作TextField控件时发现一个现象:当把键盘的默认类型改了,比如改成KetboardType.Number,然后使用focusRequester属性切换不同TextField的焦点时,软键盘会先跳转成普通键盘然后再变成数字键盘(键盘类型闪烁)。
分析
以为是设置键盘类型的位置靠后(compose中属性的设置顺序会影响实际效果),导致键盘类型没来及切换,修改之后无效果;
后发现手动切换不同的TextField进行输入时,也会出现闪烁的现象,说明和我使用代码改变焦点跳转没有关系;
后又发现这个问题网络上其实已存在,这是地址(需要梯子)。这是compose ui库中的一个bug,这是地址,现已修复。吐槽一下这个bug去年就发现了,今年才解决,所以学习新东西都是有风险的。
解决方法
compose ui库的版本太低,升级至 1.2.0-alpha03 或以上,注意kotlin的版本也要随着compose的版本而变化,这是compose和kotlin版本兼容地址。