Android判断软键盘d出并隐藏的简单完美解决方法(推荐)

Android判断软键盘d出并隐藏的简单完美解决方法(推荐),第1张

概述最近项目中有一个编辑框,下面是个ListView。在触发编辑框d出软键盘后,ListView还能滑动,并且ListView的item还能响应单击。这样的体验效果很不好。于是便想在滑动或单击item时判断键盘是否d出,若d出,则把它隐

最近项目中有一个编辑框,下面是个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出并隐藏的简单完美解决方法(推荐)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存