Android EditText软键盘显示隐藏以及“监听”
来源:互联网 发布:网络主播解约协议 编辑:程序博客网 时间:2024/06/05 10:59
原文地址 http://www.linuxidc.com/Linux/2013-10/91579.htm
一、写此文章的起因
本人在做类似于微信、易信等这样的聊天软件时,遇到了一个问题。聊天界面最下面一般类似于如图1这样(这里只是显示了最下面部分,可以参考微信等),有输入文字的EditText和表情按钮等。
1、点击表情会在这下面显示表情选择,如图2,如果之前点击输入框弹出了软键盘,那么还需要隐藏软键盘;
2、点击输入框,弹出软键盘,如果之前显示了表情选择,则还需要隐藏表情选择。
这里我们第一想到的就是需要监听软键盘的显示和隐藏,我也是这样想的,到网上一查,都是重写根布局,比如LinearLayout,RelativeLayout这些,然后重写OnLayout方法,这种主要是监听根布局高度的变化,来判断软键盘的显示和隐藏,我这样做了,但是像华为p6这样的手机,它有一个虚拟的home,back键,可以通过向上向下滑动来显示和隐藏,我在上面测试了一下,它的虚拟键和输入法都判断到了,我无法知道到底是哪个,所以我就舍弃了这个方法。在仔细参考了微信和易信时,发现了这种方法,简单易用。
图1
图2
二、解决方案
我针对第一点中提到了两点需要实现的功能来讲解
1、点击表情隐藏输入法,我们只需要强制隐藏输入法就可以了,这个不需要过多讲解
//强行隐藏输入法
inputMethodManager.hideSoftInputFromWindow(mEditTextContent.getWindowToken(), 0);
2、点击输入框,输入法弹出来后,需要隐藏表情选择,其实这里不需要监听软键盘的显示,也不好监听。我仔细观察了易信和微信的输入框,感觉很灵敏,触摸上去就弹出了输入法,而我的输入框就没那么灵敏,所以就仔细考虑了一下,直接设置输入框的Touch事件,主动强制弹出输入法,这时就可以隐藏表情选择了.
mEditTextContent.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
//强制显示软键盘
boolean bool = inputMethodManager.showSoftInput(v,InputMethodManager.SHOW_FORCED);
if(bool){
chatAdd.setVisibility(View.GONE);
layoutChatFace.setVisibility(View.GONE);
}
return false;
}
});
如果这里觉得太灵敏,也可以在Touch事件中,但Up时再显示软键盘。这些只是我的一些个人见解,如有疑问或更好方案大家可以一起讨论。
推荐阅读:
Android ListView中按钮监听器设置的解决方案 http://www.linuxidc.com/Linux/2013-07/87668.htm
Android 监听来去电 弹出悬浮窗提示 http://www.linuxidc.com/Linux/2013-04/82650.htm
Android短信数据库监听回调多次问题 http://www.linuxidc.com/Linux/2013-04/82592.htm
Android 中如何监听耳机键消息 http://www.linuxidc.com/Linux/2012-12/76573.htm
Android 中如何监听按键的长按事件 http://www.linuxidc.com/Linux/2012-12/76572.htm
Android HOME键监听初认识 http://www.linuxidc.com/Linux/2012-12/76202.htm
更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11
- android EditText软键盘显示隐藏以及"监听"
- Android EditText软键盘显示隐藏以及“监听”
- Android EditText软键盘显示隐藏以及“监听”
- Android EditText软键盘显示隐藏以及“监听”
- Android EditText软键盘显示隐藏以及“监听”
- android Edittext 监听软键盘弹出显示和消失隐藏
- Android Edittext 显示隐藏软键盘
- Android软键盘的隐藏显示监听
- Android 监听软键盘显示隐藏
- Android中软键盘InputMethodManager的弹出和隐藏,以及显示和隐藏的监听
- EditText 显示隐藏软键盘
- android隐藏以及显示软键盘
- android隐藏以及显示软键盘
- Android EditText软键盘监听事件以及自动补全功能
- android软键盘的隐藏以及Edittext的焦点问题
- android强制隐藏软键盘以及取消EditText的焦点
- 处理Android中EditText软键盘显示与隐藏
- android EditText软键盘的隐藏和显示
- AppDelegate中的模块初始化转移
- Redis Sentinel集群方案--单机测试
- 用wifi调试android程序
- Android入门实例一 登录界面的设计与实现
- sublime text 2 前端编码神器-快捷键与使用技巧介绍(转)
- Android EditText软键盘显示隐藏以及“监听”
- WebView的使用(基本篇)
- WPF中同一窗口下的界面切换
- Flex AdvancedDataGrid 数据展示异常
- Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression & Regularization
- 计算机底层知识拾遗(十)理解进程调度
- 前插法创建单链表
- VS2010编译的程序,在其他电脑上出现“应用程序正常初始化(0xc0150002)失败”问题的解决方案
- html css float left与 float right的使用说明