Android EditText软键盘显示隐藏以及“监听”
一、写此文章的起因
本人在做类似于微信、易信等这样的聊天软件时,遇到了一个问题。聊天界面最下面一般类似于如图1这样(这里只是显示了最下面部分,可以参考微信等),有输入文字的EditText和表情按钮等。
1、点击表情会在这下面显示表情选择,如图2,如果之前点击输入框弹出了软键盘,那么还需要隐藏软键盘;
2、点击输入框,弹出软键盘,如果之前显示了表情选择,则还需要隐藏表情选择。
这里我们第一想到的就是需要监听软键盘的显示和隐藏,我也是这样想的,到网上一查,都是重写根布局,比如LinearLayout,RelativeLayout这些,然后重写OnLayout方法,这种主要是监听根布局高度的变化,来判断软键盘的显示和隐藏,我这样做了,但是像华为p6这样的手机,它有一个虚拟的home,back键,可以通过向上向下滑动来显示和隐藏,我在上面测试了一下,它的虚拟键和输入法都判断到了,我无法知道到底是哪个,所以我就舍弃了这个方法。在仔细参考了微信和易信时,发现了这种方法,简单易用。


二、解决方案
我针对第一点中提到了两点需要实现的功能来讲解
1、点击表情隐藏输入法,我们只需要强制隐藏输入法就可以了,这个不需要过多讲解
//强行隐藏输入法
inputMethodManager.hideSoftInputFromWindow(mEditTextContent.getWindowToken(), 0);
2、点击输入框,输入法弹出来后,需要隐藏表情选择,其实这里不需要监听软键盘的显示,也不好监听。我仔细观察了易信和微信的输入框,感觉很灵敏,触摸上去就弹出了输入法,而我的输入框就没那么灵敏,所以就仔细考虑了一下,直接设置输入框的Touch事件,主动强制弹出输入法,这时就可以隐藏表情选择了.
1 mEditTextContent.setOnTouchListener(new View.OnTouchListener()
2 {
3
4 @Override
5 public boolean onTouch(View v, MotionEvent event)
6 {
7 //强制显示软键盘
8 boolean bool = inputMethodManager.showSoftInput(v,InputMethodManager.SHOW_FORCED);
9 if(bool){
10 chatAdd.setVisibility(View.GONE);
11 layoutChatFace.setVisibility(View.GONE);
12 }
13 return false;
14 }
15 });
如果这里觉得太灵敏,也可以在Touch事件中,但Up时再显示软键盘。这些只是我的一些个人见解,如有疑问或更好方案大家可以一起讨论。
Android EditText软键盘显示隐藏以及“监听”的更多相关文章
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
在输入框中加入android:imeOptions="actionSearch",调用软键盘时,回车键就会显示搜索二字. 我想在点击搜索时,跳转到下一个页面,但是调用setOnKe ...
- Android 设置软键盘搜索键以及监听搜索键点击事件
如图所示,有时候为了布局美观,在搜索时没有搜索按钮,而是调用软件盘上的按钮.调用的实现只需要在XML在输入框中加入android:imeOptions="actionSearch" ...
- DownEditTextView【自定义Edittext对Android 软键盘向下的监听】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能.基本上和参考资料相同. 效果图 代码分析 自定义EditText子 ...
- 软键盘 显示隐藏 测量高度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android软键盘的隐藏显示、事件监听的代码
把开发过程中重要的一些内容片段做个珍藏,如下资料是关于Android软键盘的隐藏显示.事件监听的内容,应该是对小伙伴们有所用途. public class ResizeLayout extends L ...
- Android之Android软键盘的隐藏显示研究
转自:http://blog.csdn.net/lilu_leo/article/details/6587578 看了很多这类型的文章,这篇文章最有价值,解决了我的烦恼,必须转. Android是一个 ...
- EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听
软键盘显示和隐藏的监听: 注: mReplayRelativeLayout是EditText的父布局 //监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeO ...
- 日积月累:EditText软键盘的显示和隐藏
在工作过程中,常常会遇见需要根据自己的需求,控制文本框的键盘显示和隐藏. 通过查阅Android文档,介绍可以通过在清单文件中<activity>元素中添加android:windowSo ...
- android软键盘弹出隐藏的监听
通过网上搜索关于软键盘的隐藏弹出的监听,有几种方式,其中最有效的方式是在View的Onlayout()里面做文章 具体代码: 将布局视图自定义,重写onlayout()方法,然后在主Activity里 ...
随机推荐
- Java测试开发--Set、Map、List三种集合(四)
1.集合类型主要有3种:set(集).list(列表)和map(映射). 2.三者关系 3.Set set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这 ...
- PTA 7-3 Windows消息队列 (25分)
PTA 7-3 Windows消息队列 (25分) 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列 ...
- 关于React采坑(憨批)系列---类组件(class MyCom extends React.Component--VM47:9 Uncaught TypeError: Super expression must either be null or a function, not undefined)
今天在学习React中的类组件时,突然给我报错VM47:9 Uncaught TypeError: Super expression must either be null or a function ...
- 【JAVA】笔记(4)---继承;方法覆盖;多态机制;super;
继承(extends): 1.作用:为方法覆盖和多态机制做准备:使代码得到复用(节省代码量): 2.格式: class 子类 extends 父类 3.理解继承:子类继承父类,其实就相当于把父类的类体 ...
- vue自定义指令实例使用(实例说明自定义指令的作用)
在写vue项目的时候,我们经常需要对后台返回的数据进行大量的渲染操作,其中就包含了大量的对特殊数据的进一步处理,比如说时间戳.图片地址.特殊数据显示等等特殊数据处理改进. 其实遇到这种情况,通过Vue ...
- ubuntu 首次登陆设置root密码
用过ubuntu的人都知道,ubuntu默认root密码是随机的,即每次开机都有一个新的root密码.我们可以在终端输入命令sudo passwd,然后输入当前用户的密码 给root用户设置密码 ...
- 如何将rabbitmq集群中的某个节点移除.
首先将要移除的节点停机. root@rabbitmq-03:~# rabbitmqctl stop Stopping and halting node 'rabbit@rabbitmq-03' ... ...
- [atAGC045C]Range Set
首先我们可以把所有位置都变为1,因此不妨假设$a\le b$ 一个字符串$s$合法当且仅当:将其中每一段长度不小于$a$的0变成1后,存在一段1的长度都不小于$b$ 证明:我们称$S_{a,b}$为通 ...
- 微信和QQ这么多群,该如何管理好友关系?
本文节选自<设计模式就该这样学> 1 中介者模式的应用场景 在现实生活中,中介者的存在是不可缺少的,如果没有了中介者,我们就不能与远方的朋友进行交流.各个同事对象将会相互进行引用,如果每个 ...
- 2021年春秋杯网络安全联赛秋季赛 勇者山峰部分wp
1.签到题-Crypto Vigenere 根据题目Vigenere可看出是维吉尼亚密码 使用在线网站破解 https://guballa.de/vigenere-solver flag:53d613 ...