Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_673_0@最近项目中一个编辑框,下面是个ListView。在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击。这样的体验效果很不好。于是便想在滑动或单击item时判断键盘是否弹出,若弹出,则把它隐藏。

@H_673_0@网上一搜,发现Android并没有直接提供软键盘的弹出与隐藏判断,一些解决方案诸如判断父控件的高度或者判断

if(getWindow().getAttributes().sofTinputMode==WindowManager.LayoutParams.soFT_INPUT_STATE_HIDDEN)
 隐藏键盘;
@H_673_0@的方法并没有用,于是便从官方文档着手。

@H_673_0@发现InputMethodManager有一个方法isActive(View view):如果view是输入法的活动view,则返回true。也就是说,如果是由view触发弹出软键盘,则返回true。哇,那问题就好办了

if(isActive(edittext))
隐藏键盘
@H_673_0@接着让另一个view强制获取焦点,这样isActivite(ediitext)就为false.

@H_673_0@这个方法比较简单,代码比较短,也很好理解,希望能够帮助有需要的人,也不枉费我调试几个小时的功夫。

@H_673_0@附上代码

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;
  }
@H_673_0@ps:  如果是手动弹出键盘,getActivity().getCurrentFocus()改成searchEditText.并且手动弹出的键盘isActivie()失效,可用@L_874_25@来判断.

@H_673_0@以上就是小编为大家带来的Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)全部内容了,希望大家多多支持编程小技巧~

大佬总结

以上是大佬教程为你收集整理的Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)全部内容,希望文章能够帮你解决Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。