解决类似微信聊天界面软键盘和表情框冲突问题
软键盘相关的知识:
针对软键盘,如果想让键盘覆盖我们视图控件.那么在 AndroidManifest.xml中对该Activity加上 android:windowSoftInputMode="adjustPan" 如果想让软键盘不覆盖我们的视图,
我们应该加上android:windowSoftInputMode="adjustResize" 这样屏幕会上移动.
除了这两种状态,还有以下状态:
stateUnspecified : 软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。 这个是为了软件盘行为默认的设置。
stateUnchanged: 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。
stateHidden : 当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
stateAlwaysHidden : 软键盘总是被隐藏的,当该Activity主窗口获取焦点时。
stateVisible : 软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。
stateAlwaysVisible : 当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
adjustUnspecified : 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。
adjustResize : 该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间.
adjustPan : 该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
在聊天界面,如果表情框没有打开,现在的状态应该adjustResize ,这样我们调起软键盘的时候,就可以把输入框顶起来;如果表情框已经打开,我们调起软键盘的时候,就不需要改变布局的状态,那么状态就应该是adjustPan ;所以我们要动态设置SoftInputMode,代码中改变状态代码为:
if (biaoqingView.getVisibility() == View.VISIBLE) {
biaoqingView.setVisibility(View.GONE);
imgBiaoqing.setImageResource(R.drawable.expression);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
inputManager.showSoftInput(edtInput, InputMethodManager.HIDE_NOT_ALWAYS);
}
else {
imgBiaoqing.setImageResource(R.drawable.keyboard);
biaoqingView.setVisibility(View.VISIBLE);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
reCountListHeight();// 重新计算listview的高度
if (inputManager.isActive()) {
inputManager.hideSoftInputFromWindow(edtInput.getWindowToken(), 0);
}
}
具体代码下载地址:http://download.csdn.net/detail/u011688880/7791371;
解决类似微信聊天界面软键盘和表情框冲突问题相关推荐
- #解决仿微信聊天界面键盘遮盖聊天的界面
解决仿微信聊天界面键盘遮盖聊天的界面 注意聊天界面的activity一定不能处于全屏模式 //第一步设置属性 <!--模拟的布局文件--><?xml version="1. ...
- 类似微信聊天界面加载历史记录的样式
做IM聊天时,加载聊天历史纪录时,reload的时候,会把tableview滚动到顶部,用户体验效果并不好.我们需要在加载历史纪录时,不让他自动滚动. 上网找了一个方法,挺好用的: 创建一个继承于:U ...
- 解决微信“聊天界面中的新消息通知”设置按钮不见了问题
原因 解决微信"聊天界面中的新消息通知"设置按钮不见了问题 解决方法 开启"接收新消息通知"后,"聊天界面中的新消息通知"设置按钮就会出现
- 解决登陆界面软键盘弹出遮住登陆按钮
android:windowSoftInputMode属性一共同拥有9个取值.各自是: stateUnspecified: 当设置属性为stateUnspecified的时候,系统是默认不弹出软键盘的 ...
- 解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端)
解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端) 参考文章: (1)解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端) (2)https://www.cnblogs.com/zouw ...
- DuiLib实现仿微信聊天界面(二)——解决RichEdit自适应高度问题
前言 在上一篇文章中: DuiLib实现仿微信聊天界面 我们实现了仿微信的布局和简单的聊天列表: 但是,因为网易开源 NimDuiLib 的版本落后于其提供的Demo,同样的写法在开源DuiLib中就 ...
- 关于微信聊天界面更换背景
关于SurfaceView竖屏问题: http://stackoverflow.com/questions/7455399/rotating-a-camera-surfaceview-to-portr ...
- php写的微信聊天界面,Android_Android高仿微信聊天界面代码分享,微信聊天现在非常火,是因其 - phpStudy...
Android高仿微信聊天界面代码分享 微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先 ...
- android模拟微信聊天功能,android仿微信聊天界面 语音录制功能
本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图: 第一:chat.xml设计 android:layout_width="fill_parent" and ...
最新文章
- 【每日一算法】全排列问题
- 数据结构特性解析 (一) 数组
- 使用TortoiseGit,设置ssh方式连接git仓库
- c语言中time相关函数
- 60、date的使用
- android 安装应用程序apk安装不了
- 判断应用程序在前台还是后台
- asp.net程序中最常用的三十三种编程代码(转自CSDN)
- Spring Boot2.0之热部署原理
- 中国范围的经纬度及部分城市经纬度
- 微软雅黑与等宽字体Source Code Pro下载
- linux压缩命令常用:tar,tgz,gzip,zip,rar
- html js设置div可拖动效果
- Windows查看所有的端口及端口对应的程序
- 安卓开发 虚拟机启动失败
- 风之大陆 服务器不稳定,《风之大陆》手游官网——异世界奇幻冒险MMO手游
- 按照python后没有菜单栏 知乎_在线按汉字偏旁部首查字
- Nestjs模块机制的概念和实现原理
- ORA-29702错误解决
- Android中关于轨迹定位点去噪算法,使用简单