读书人

盘点焦点 得失软键盘显示隐藏有关问

发布时间: 2012-09-15 19:09:28 作者: rapoo

盘点焦点 得失,软键盘显示隐藏问题。。。写的三种方法 均不管用。。望指点一下。。。谢谢
第一种方法 没有管用

Java code
searchauto.setOnTouchListener(this);public boolean onTouch(View v, MotionEvent event) {        searchauto = (AutoCompleteTextView)v ;          searchauto.setInputType(InputType.TYPE_NULL) ;         return false;    }  


第二种 方法 监听焦点变化 得到焦点的时候显示软件盘 失去焦点的时候隐藏 没有管用
Java code
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);                    }            }        });

第三个 是 设置当焦点在编辑框上的时候 点击回车键 显示软件盘 没有 管用
Java code
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;            }        });


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


另外,点输入框系统是默认会显示软键盘,系统有改过?

读书人网 >Android

热点推荐