Android判断软键盘弹出并隐藏的简单完美解决方案
来源:互联网 发布:knn算法c语言代码 编辑:程序博客网 时间:2024/05/22 09:48
最近项目中有一个编辑框,下面是个ListView。在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击。这样的体验效果很不好。于是便想在滑动或单击item时判断键盘是否弹出,若弹出,则把它隐藏。
网上一搜,发现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; }
注:如果是手动弹出键盘,getActivity().getCurrentFocus()改成searchEditText.并且手动弹出的键盘isActivie()失效,可用标记来判断.
0 0
- Android判断软键盘弹出并隐藏的简单完美解决方案
- Android判断软键盘弹出并隐藏的简单完美解决方案
- Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)
- android 监听判断软键盘的弹出、隐藏状态
- Andriod 判断软键盘弹出并隐藏详解
- android中监听软键盘的弹出与隐藏,并获取软键盘的高度
- Android 完美的隐藏软键盘方法
- Android软键盘的弹出和隐藏
- android 完美隐藏软键盘
- Android判断软键盘的状态和隐藏软键盘
- Android判断软键盘显示状态并隐藏
- Android软键盘的弹出 隐藏部分界面的方法
- 判断软键盘的弹出
- Android - 隐藏EditText弹出的软键盘输入(SoftInput)
- Android控制软键盘的弹出和隐藏
- android监听软键盘的弹出与隐藏
- android 监听软键盘的弹出与隐藏
- android隐藏软键盘 不自动弹出键盘的方法
- Android-动画
- .NET 开发误区
- 洛谷 U1406 game
- JNI编程
- pylucene在python2.7下的安装
- Android判断软键盘弹出并隐藏的简单完美解决方案
- hadoop2 中log4j日志详解及自定义
- 【c++程序】虚函数的本质
- 使用字符流的方式进行文件的读取并打印至控制台
- Java往文件追加内容
- PostgreSQL function's SECURITY DEFINER | INVOKER, SET configuration_parameter { TO value | = value |
- 【开篇.流水账.反思】从今天开始记录我的学习生涯
- 文章标题
- 倒置链表(递归方式)