EditText弹出键盘失败问题

  • 问题:EditText获取焦点并弹出键盘方法,在Activity onCreate调用时无效:
/**
 * 显示键盘
 *
 * @param et EditText
 */
public void showSoftInput(final EditText et) {
    et.requestFocus();
    InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
}
  • 原因:View的绘制流程与Activity生命周期不同步,即Activity onCreate完成,EditText仍然没有绘制出来

  • 解决方法:调用view的post方法,在run方法中弹出键盘

et.post(new Runnable() {
            @Override
            public void run() {
                showSoftInput(et);
            }
        });
);

因为post会将runnable放到队列的末尾,当post的任务执行,说明view已经完全绘制出来。关于view.post的细节可以到此链接了解https://www.jianshu.com/p/b1d5e31e2011

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

推荐阅读更多精彩内容

友情链接更多精彩内容