技术库 > Java

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

技术库:tec.5lulu.com

from:tec.5lulu.com

       方法:即onCreate()中调用EditText实例的setInputType(InputType.TYPE_NULL),xml文件中定义EditText时,指定的Android:inputType="??",??可以任意。
/** Init date EditText. */ 
View.OnTouchListener dateEditTextOnTouchListener = new EditTextOnTouchListener( 
DATE_DIALOG); 
mDateEditText.setOnTouchListener(dateEditTextOnTouchListener); 
mDateEditText.setInputType(InputType.TYPE_NULL); 
 
/** Init time start/end EditText. */ 
View.OnTouchListener timeStartEditTextOnTouchListener = new EditTextOnTouchListener( 
TIME_START_DIALOG); 
mTimeStartEditText.setOnTouchListener(timeStartEditTextOnTouchListener); 
mTimeStartEditText.setInputType(InputType.TYPE_NULL); 
 
View.OnTouchListener timeEndEditTextOnTouchListener = new EditTextOnTouchListener( 
TIME_END_DIALOG); 
mTimeEndEditText.setOnTouchListener(timeEndEditTextOnTouchListener); 
mTimeEndEditText.setInputType(InputType.TYPE_NULL); 
 
private class EditTextOnTouchListener implementsView.OnTouchListener { 
 
private int dialogId = 0; 
public EditTextOnTouchListener(int dialogId) { 
 
this.dialogId = dialogId; 
} 
 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
showDialog(dialogId); 
return false; 
} 
}

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

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

/** Invoked by showDialog indirectly. */ 
protected Dialog onCreateDialog(int id) { 

...... 
 
}

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

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


标签: android 对话框 private public int本文链接 http://tec.5lulu.com/detail/110krn1e6i6c78s81.html

我来评分 :6.5
1

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com