美文网首页
EditText弹出键盘失败问题

EditText弹出键盘失败问题

作者: Mixqum | 来源:发表于2021-03-31 20:47 被阅读0次
  • 问题: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

相关文章

网友评论

      本文标题:EditText弹出键盘失败问题

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