Android 解决editView调用requestFocus()方法无效

需求场景

登陆成功后可以点击退出返回登陆页面,需要清除账号密码并且重新调整光标位置

每次都需要登陆的APP,登陆成功后保存账号,在有保存账号的情况下,自动将光标设置给输入密码的位置

问题

项目A中,调用接口后在子线程中写了password.requestFocus();,没有什么问题.
在项目B中,使用本地登陆验证,代码如下:

        if (有账号缓存) {
            username.setText("xxxxxxxx");
            password.requestFocus();
        }

结果并不生效,后来使用runOnUiThread()也不生效.

解决方法

增加了一个延迟方法:

runDelayed(new Runnable() {
                @Override
                public void run() {
                    password.requestFocus();
                }
            }, 20);

延迟20ms(用户无感的短延迟),设置生效了.
具体原理没深究,但是搜了一下网上大家都是这么解决的
有知道原理的朋友留言告知一下谢谢.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容