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

移动开发 Android
默认EditText在获得焦点时,会弹出软键盘,如果想实现当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触发的调用过程。

责任编辑:张叶青 来源: Linux公社
相关推荐

2013-07-16 14:47:18

Android EdiEditText不弹出Android开发

2024-05-06 08:28:09

Android窗口键盘

2021-08-07 15:31:45

Windows 10Windows微软

2017-07-03 17:20:55

Android软键盘控制开发问题

2009-08-21 13:25:49

C#打开软键盘

2024-03-06 09:16:57

PAD设备kikaInput鸿蒙

2011-02-22 11:11:33

EditTextAndroid

2017-12-05 15:26:19

2017-12-05 13:12:35

Android软键盘参数

2020-03-24 09:34:00

移动端H5软键盘

2021-07-13 09:49:08

鸿蒙HarmonyOS应用

2019-04-25 10:20:22

H5软键盘前端

2013-04-01 17:05:28

2021-02-20 22:15:44

Android 代码操作系统

2024-05-28 08:23:36

Android开发文本

2022-04-26 10:41:46

Android游戏开发工具

2019-08-05 08:02:31

AI 数据人工智能

2011-06-22 10:27:32

QT 键盘 焦点

2009-05-07 17:24:05

Android 1.5CupcakeAndroid

2009-04-15 08:18:44

AndroidGoogle移动OS
点赞
收藏

51CTO技术栈公众号