首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

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

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

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)


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

热点排行