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