设为首页 加入收藏

TOP

Android中设置EditText获得焦点时不弹出软键盘
2014-11-24 14:30:30 来源: 作者: 【 】 浏览:1
Tags:Android 设置 EditText 获得 焦点 时不弹 键盘

默认EditText在获得焦点时,会弹出软键盘,如果想实现当EditText获得焦点时,直接弹出对话框,像时间对话框,而不要弹出软键盘,该如何禁卡弹出软键盘?


/** 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 Messenger 跨进程通信 下一篇自己动手写最简单的Android驱动--..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: