美文网首页程序员
Android 解决editView调用requestFocus

Android 解决editView调用requestFocus

作者: Alex富贵 | 来源:发表于2020-08-27 00:13 被阅读0次

需求场景

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

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

问题

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

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

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

解决方法

增加了一个延迟方法:

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

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

相关文章

网友评论

    本文标题:Android 解决editView调用requestFocus

    本文链接:https://www.haomeiwen.com/subject/tuyqsktx.html