新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
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í),會(huì)有一個(gè)現(xiàn)象:即,當(dāng)EditText從沒有獲得焦點(diǎn)到第一次獲得焦點(diǎn)時(shí),不會(huì)彈出對話框,只有在EditText已經(jīng)獲得焦點(diǎn)的情況下再去點(diǎn)擊EditText,此時(shí)才會(huì)彈出對話框。但是如果不設(shè)置OnClickListener,而是設(shè)置成OnTouchListener則第一次獲得焦點(diǎn)時(shí)就會(huì)彈出對話框。
注:上面的部分源碼沒有包括:
- /** Invoked by showDialog indirectly. */
- protected Dialog onCreateDialog(int id) {
- ......
- }
這個(gè)onCreateDialog是在調(diào)用了showDialog后,解發(fā)的。細(xì)節(jié)可以參看Activity.class里面的showDialog觸發(fā)的調(diào)用過程。
名稱欄目:Android開發(fā)中設(shè)置EditText獲得焦點(diǎn)時(shí)不彈出軟鍵盤
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/coogidj.html


咨詢
建站咨詢
