Android开发中设置EditText获得焦点时不弹出软键盘

方法:即onCreate()中调用EditText实例的setInputType(InputType.TYPE_NULL),xml文件中定义EditText时,指定的Android:inputType="??",??可以任意。

 
 
  1. /** Init date EditText. */ 
  2. View.OnTouchListener dateEditTextOnTouchListener = new EditTextOnTouchListener( 
  3. DATE_DIALOG); 
  4. mDateEditText.setOnTouchListener(dateEditTextOnTouchListener); 
  5. mDateEditText.setInputType(InputType.TYPE_NULL); 
  6.  
  7. /** Init time start/end EditText. */ 
  8. View.OnTouchListener timeStartEditTextOnTouchListener = new EditTextOnTouchListener( 
  9. TIME_START_DIALOG); 
  10. mTimeStartEditText.setOnTouchListener(timeStartEditTextOnTouchListener); 
  11. mTimeStartEditText.setInputType(InputType.TYPE_NULL); 
  12.  
  13. View.OnTouchListener timeEndEditTextOnTouchListener = new EditTextOnTouchListener( 
  14. TIME_END_DIALOG); 
  15. mTimeEndEditText.setOnTouchListener(timeEndEditTextOnTouchListener); 
  16. mTimeEndEditText.setInputType(InputType.TYPE_NULL); 
  17.  
  18. private class EditTextOnTouchListener implementsView.OnTouchListener { 
  19.  
  20. private int dialogId = 0; 
  21. public EditTextOnTouchListener(int dialogId) { 
  22.  
  23. this.dialogId = dialogId; 
  24.  
  25. @Override 
  26. public boolean onTouch(View v, MotionEvent event) { 
  27. showDialog(dialogId); 
  28. return false; 

因为要实现弹出对话框,试过如果不用上面的OnTouchListener而是用OnClickListener时,会有一个现象:即,当EditText从没有获得焦点到第一次获得焦点时,不会弹出对话框,只有在EditText已经获得焦点的情况下再去点击EditText,此时才会弹出对话框。但是如果不设置OnClickListener,而是设置成OnTouchListener则第一次获得焦点时就会弹出对话框。

注:上面的部分源码没有包括:

 
 
  1. /** Invoked by showDialog indirectly. */ 
  2. protected Dialog onCreateDialog(int id) { 
  3.  
  4.  
  5. ...... 
  6.  
  7. } 

这个onCreateDialog是在调用了showDialog后,解发的。细节可以参看Activity.class里面的showDialog触发的调用过程。

网站栏目:Android开发中设置EditText获得焦点时不弹出软键盘
链接URL:http://www.csdahua.cn/qtweb/news4/374104.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网