第一种方法  没有管用  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;
}
});

解决方案 »

  1.   

    android定义了一个属性,名字为windowSoftInputMode, 用它可以让程序可以控制活动主窗口调整的方式。我们可以在AndroidManifet.xml中对Activity进行设置。如:android:windowSoftInputMode="stateUnchanged|adjustPan"
      该属性可选的值有两部分,一部分为软键盘的状态控制,另一部分是活动主窗口的调整。请自行查阅android文档。 
      

  2.   

    你如果用第2种,if里面应该是hasFocus
    if(hasFocus)
    另外,点输入框系统是默认会显示软键盘,系统有改过?
      

  3.   

    大家帮我看一下,或解释一下原因吧谢谢了。代码如下:searchauto.setOnFocusChangeListener(new OnFocusChangeListener() {
     
                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  获得 焦点的时候 点击回车键还是不会显示软件盘  ???