Android開發(fā)中設(shè)置EditText獲得焦點(diǎn)時(shí)不彈出軟鍵盤
方法:即onCreate()中調(diào)用EditText實(shí)例的setInputType(InputType.TYPE_NULL),xml文件中定義EditText時(shí),指定的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;
 - }
 - }
 
因?yàn)橐獙?shí)現(xiàn)彈出對(duì)話框,試過(guò)如果不用上面的OnTouchListener而是用OnClickListener時(shí),會(huì)有一個(gè)現(xiàn)象:即,當(dāng)EditText從沒有獲得焦點(diǎn)到第一次獲得焦點(diǎn)時(shí),不會(huì)彈出對(duì)話框,只有在EditText已經(jīng)獲得焦點(diǎn)的情況下再去點(diǎn)擊EditText,此時(shí)才會(huì)彈出對(duì)話框。但是如果不設(shè)置OnClickListener,而是設(shè)置成OnTouchListener則第一次獲得焦點(diǎn)時(shí)就會(huì)彈出對(duì)話框。
注:上面的部分源碼沒有包括:
- /** Invoked by showDialog indirectly. */
 - protected Dialog onCreateDialog(int id) {
 - ......
 - }
 
這個(gè)onCreateDialog是在調(diào)用了showDialog后,解發(fā)的。細(xì)節(jié)可以參看Activity.class里面的showDialog觸發(fā)的調(diào)用過(guò)程。















 
 
 






 
 
 
 