最近项目中有一个编辑框,下面是个ListVIEw。在触发编辑框d出软键盘后,ListVIEw还能滑动,并且ListVIEw的item还能响应单击。这样的体验效果很不好。于是便想在滑动或单击item时判断键盘是否d出,若d出,则把它隐藏。
网上一搜,发现AndroID并没有直接提供软键盘的d出与隐藏判断,一些解决方案诸如判断父控件的高度或者判断
if(getwindow().getAttributes().softinputMode==WindowManager.LayoutParams.soFT_input_STATE_HIDDEN) 隐藏键盘;
的方法并没有用,于是便从官方文档着手。
发现inputMethodManager有一个方法isActive(VIEw vIEw):如果vIEw是输入法的活动vIEw,则返回true。也就是说,如果是由vIEw触发d出软键盘,则返回true。哇,那问题就好办了
if(isActive(edittext))隐藏键盘
接着让另一个vIEw强制获取焦点,这样isActivite(ediitext)就为false.
这个方法比较简单,代码比较短,也很好理解,希望能够帮助有需要的人,也不枉费我调试几个小时的功夫。
附上代码:
inputMethodManager inputMethodManager = (inputMethodManager)getActivity().getSystemService(Context.input_METHOD_SERVICE);<br>private boolean hIDeKeyboard(){ if(inputMethodManager.isActive(searchEditText)){<br> //因为是在fragment下,所以用了getVIEw()获取vIEw,也可以用findVIEwByID()来获取父控件 getVIEw().requestFocus();//使其它vIEw获取焦点.这里因为是在fragment下,所以便用了getVIEw(),可以指定任意其它vIEw inputMethodManager.hIDeSoftinputFromWindow(getActivity().getCurrentFocus().getwindowToken(),inputMethodManager.HIDE_NOT_ALWAYS); return true; } return false; }
ps: 如果是手动d出键盘,getActivity().getCurrentFocus()改成searchEditText.并且手动d出的键盘isActivIE()失效,可用标记来判断.
以上就是小编为大家带来的AndroID判断软键盘d出并隐藏的简单完美解决方法(推荐)全部内容了,希望大家多多支持编程小技巧~
总结以上是内存溢出为你收集整理的Android判断软键盘d出并隐藏的简单完美解决方法(推荐)全部内容,希望文章能够帮你解决Android判断软键盘d出并隐藏的简单完美解决方法(推荐)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)