第一种方法 没有管用 searchauto.setOnTouchListener(this);
public boolean onTouch(View v, MotionEvent event) {
searchauto = (AutoCompleteTextView)v ;
searchauto.setInputType(InputType.TYPE_NULL) ;
return false;
} 第二种 方法 监听焦点变化 得到焦点的时候显示软件盘 失去焦点的时候隐藏 没有管用
searchauto.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) {
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//searchauto.setFocusable(true);
if(searchauto.requestFocus()){
//searchauto.setInputType(InputType.TYPE_NULL);
imm.showSoftInputFromInputMethod(searchauto.getWindowToken(), 0);
}
else{
imm.hideSoftInputFromWindow(searchauto.getWindowToken(), 0);
}
}
});
第三个 是 设置当焦点在编辑框上的时候 点击回车键 显示软件盘 没有 管用
searchauto.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_ENTER){
imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInputFromInputMethod(searchauto.getWindowToken(), 0);
return true;
}
return false;
}
});
public boolean onTouch(View v, MotionEvent event) {
searchauto = (AutoCompleteTextView)v ;
searchauto.setInputType(InputType.TYPE_NULL) ;
return false;
} 第二种 方法 监听焦点变化 得到焦点的时候显示软件盘 失去焦点的时候隐藏 没有管用
searchauto.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) {
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//searchauto.setFocusable(true);
if(searchauto.requestFocus()){
//searchauto.setInputType(InputType.TYPE_NULL);
imm.showSoftInputFromInputMethod(searchauto.getWindowToken(), 0);
}
else{
imm.hideSoftInputFromWindow(searchauto.getWindowToken(), 0);
}
}
});
第三个 是 设置当焦点在编辑框上的时候 点击回车键 显示软件盘 没有 管用
searchauto.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_ENTER){
imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInputFromInputMethod(searchauto.getWindowToken(), 0);
return true;
}
return false;
}
});
解决方案 »
- 关于ui线程与子线程通信的问题
- 如何获取当前运行的屏幕的activity的实例对象??
- sqlite能否在查询时把"aa/bb"的bb拿出来?
- 求助关于jni接口返回值类型的问题!
- FC错误 :java.lang.IllegalArgumentException: x + width must be <= bitmap.width()
- 关于ListView与Adapter之间的原理问题
- ADT - http://dl-ssl.google.com/android/eclipse 一直不下载 怎么办?
- Activity 切换问题(或者说按Home键finish Activity)
- android 操作rtf文件
- android studio的gradle问题
- 计数器显示
- 请教个设置壁纸问题
该属性可选的值有两部分,一部分为软键盘的状态控制,另一部分是活动主窗口的调整。请自行查阅android文档。
if(hasFocus)
另外,点输入框系统是默认会显示软键盘,系统有改过?
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (hasFocus) {
imm.showSoftInputFromInputMethod(searchauto.getWindowToken() , 0);
} else {
try {
imm.hideSoftInputFromWindow(searchauto.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
} catch (Exception e) {
System.out.println(" null!!!!!");
}
}
}
});
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
et.clearFocus();
button.requestFocus();
}
});
问题: 我使用EditText 这样 写监听,当焦点 移动到 别的按钮上以后 再回来点击 回车键,软键盘就会显示,可是当我 换成 AutoCompleteTextView 以后,焦点移动到 别的view 上,再回来 点击回车键 软键盘 怎么都不会显示! 还有就是 当使用 EditText 的时候 为什么 只写 第一段代码的监听,不给 Button 监听 当 EditText 获得 焦点的时候 点击回车键还是不会显示软件盘 ???