欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中自定义的dialog中的EditText无法弹出输入法解决方案

程序员文章站 2022-07-18 12:46:29
1.解决无法弹出输入法:   在show()方法调用之前,用dialog.setview(new edittext(context))添加一个空的edittext,由于是...

1.解决无法弹出输入法:

  在show()方法调用之前,用dialog.setview(new edittext(context))添加一个空的edittext,由于是自定义的alertdialog,有我们指定的布局,所以设置这个不会影响我们的功能,这样就可以弹出输入法了……

2.可以弹出输入法了,但了为了增强用户体验性,当dialog中含有edittext时应该,在显示dialog的同时自动弹出键盘:

(1) 可以在自定义的dialog中增加如下方法:

public void showkeyboard() { 
    if(edittext!=null){ 
      //设置可获得焦点 
      edittext.setfocusable(true); 
      edittext.setfocusableintouchmode(true); 
      //请求获得焦点 
      edittext.requestfocus(); 
      //调用系统输入法 
      inputmethodmanager inputmanager = (inputmethodmanager) edittext 
          .getcontext().getsystemservice(context.input_method_service); 
      inputmanager.showsoftinput(edittext, 0); 
    } 
}

其中edittext为自定义dialog中的输入框的view

(2) 在dialog.show()后,调用这个方法显示输入法,由于在调用时可能dialog界面还未加载完成,edittext 可能还为空,所以需要加上一个延时任务,延迟显示:

dialog.show(); 
timer timer = new timer(); 
timer.schedule(new timertask() { 
  
  @override 
  public void run() { 
    dialog.showkeyboard(); 
  } 
}, 200); 

以上所述是小编给大家介绍的android中自定义的dialog中的edittext无法弹出输入法解决方案,希望对大家有所帮助