Android判断软键盘弹出并隐藏的简单完美解决方案
发布日期:2021-11-16 18:49:31
浏览次数:8
分类:技术文章
本文共 1215 字,大约阅读时间需要 4 分钟。
最近项目中有一个编辑框,下面是个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()失效,可用标记来判断.
转载地址:https://blog.csdn.net/Thare_Lam/article/details/49130133 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月21日 07时25分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
回顾大一
2019-04-26
英语(未完)
2019-04-26
define与const(未完待续)
2019-04-26
Eclipse的一些技巧以及快捷键(未完待续)
2019-04-26
java的基础语法(未完待续)
2019-04-26
英语小短文翻译1——The Significance of Books
2019-04-26
杂乱的Java笔记(未完)
2019-04-26
Java的类与类之间的USES-A和HAS-A及区分
2019-04-26
Java中类的构造方法
2019-04-26
java成员变量的使用
2019-04-26
java方法的重载
2019-04-26
在Windows命令行运行java程序
2019-04-26
java的可扩展性
2019-04-26
java中JDK的安装
2019-04-26
Java之数组小知识(加内存图)
2019-04-26
关于Java的一些图形awt介绍
2019-04-26
java之StringBuilder和关于数组怎么扩容
2019-04-26
java中的形参为引用类型的问题
2019-04-26
模拟太阳系项目
2019-04-26
c语言基础语法六——结构体(完结)
2019-04-26