Android判断软键盘弹出并隐藏的简单完美解决方案
2015-07-03 01:12
627 查看
最近项目中有一个编辑框,下面是个ListView。在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击。这样的体验效果很不好。于是便想在滑动或单击item时判断键盘是否弹出,若弹出,则把它隐藏。
网上一搜,发现Android并没有直接提供软键盘的弹出与隐藏判断,一些解决方案诸如判断父控件的高度或者判断
的方法并没有用,于是便从官方文档着手。
发现InputMethodManager有一个方法isActive(View view):如果view是输入法的活动view,则返回true。也就是说,如果是由view触发弹出软键盘,则返回true。哇,那问题就好办了
接着让另一个view强制获取焦点,这样isActivite(ediitext)就为false.
这个方法比较简单,代码比较短,也很好理解,希望能够帮助有需要的人,也不枉费我调试几个小时的功夫。
附上代码:
ps:如果是手动弹出键盘,getActivity().getCurrentFocus()改成searchEditText.并且手动弹出的键盘isActivie()失效,可用标记来判断.
网上一搜,发现Android并没有直接提供软键盘的弹出与隐藏判断,一些解决方案诸如判断父控件的高度或者判断
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) 隐藏键盘;
的方法并没有用,于是便从官方文档着手。
发现InputMethodManager有一个方法isActive(View view):如果view是输入法的活动view,则返回true。也就是说,如果是由view触发弹出软键盘,则返回true。哇,那问题就好办了
if(isActive(edittext)) 隐藏键盘
接着让另一个view强制获取焦点,这样isActivite(ediitext)就为false.
这个方法比较简单,代码比较短,也很好理解,希望能够帮助有需要的人,也不枉费我调试几个小时的功夫。
附上代码:
InputMethodManager inputMethodManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); private boolean hideKeyboard(){ if(inputMethodManager.isActive(searchEditText)){ //因为是在fragment下,所以用了getView()获取view,也可以用findViewById()来获取父控件 getView().requestFocus();//使其它view获取焦点.这里因为是在fragment下,所以便用了getView(),可以指定任意其它view inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); return true; } return false; }
ps:如果是手动弹出键盘,getActivity().getCurrentFocus()改成searchEditText.并且手动弹出的键盘isActivie()失效,可用标记来判断.
相关文章推荐
- Android 控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现
- android-training-course-in-chinese
- setOnClickListener()与报错OnClickListener()原因
- Android 四大组件之BroadcastReceiver
- android studio基本使用零碎整理
- android下 按钮点击 的四种写法
- Android对话框(Dialog)小结
- Android对话框(Dialog)小结 分类: Android 2015-07-02 23:49 10人阅读 评论(0) 收藏
- android 自定义
- Android线程间通讯的几种方式
- Android入门(1)——Android项目结构介绍
- Android工具(2)——Android Studio开发环境安装
- Android工具(1)——搭建安卓android应用开发环境
- Android菜单(Menu)小结
- Android菜单(Menu)小结 分类: Android 2015-07-02 23:11 11人阅读 评论(0) 收藏
- Android用平铺方式实现锯齿类布局
- Android Auto CompleteTexview
- android中list数据与json互转
- Android基础之ListView的使用详解
- 查看图片