模仿微信聊天软键盘
来源:互联网 发布:360拍照软件下载 编辑:程序博客网 时间:2024/06/06 18:03
模仿微信聊天软键盘处理
微信中有一个体验不错的功能,在聊天界面他的表情选择时弹出的高度与软键盘的高度是同样高的,切换的时候就不会给人一种一跳一跳的感觉,下面说一下如何做吧。下面介绍一步一步的处理方法:
1.首先,Android系统未直接提供方法监听软键盘打开与关闭的事件,也未提供获取软键盘高度的方法。所以这里需要一个取巧的方法,监听布局变化。那么如何做到呢?代码如下
private void initSoftHeight() { listView.getViewTreeObserver() .addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); contentView.getWindowVisibleDisplayFrame(rect); softHeight = contentView.getRootView().getHeight() - rect.bottom; if (softHeight > 100) { listView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } } });}
获取到softHeight即软键盘高度(获取到软键盘高度之后删除对布局变化的监听,节省资源)。
2.设置底部布局高度使其等于软件盘高度,这样就不会有一跳一跳的感觉了,代码如下:
bottom.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, softHeight));
3.设置输入框点击事件,在弹出软键盘之前先修改软键盘弹出方式为SOFT_INPUT_ADJUST_PAN,这里设置弹出软键盘的方式x 需要动态的修改,在关闭软件盘之前需要设置弹出方式为adjustPan。下面是监听输入框点击事件代码:
if (event.getAction() == MotionEvent.ACTION_DOWN) { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); bottom.setVisibility(View.VISIBLE); handle.postDelayed(new Runnable() { @Override public void run() { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); bottom.setVisibility(View.GONE); } }, 300); imm.showSoftInput(contentView,InputMethodManager.SHOW_FORCED); contentView.requestFocus(); return true; } return false;
这里只写了大概的思路供大家参考,有错误的地方就对不住了。
0 0
- 模仿微信聊天软键盘
- 【android】软键盘 - 仿 qq/微信 聊天界面布局
- Android模仿微信语音聊天功能
- 模仿微信界面之聊天界面
- 模仿微信聊天窗口例子(Android)
- 【模仿】调用微信聊天功能和分享功能
- Android模仿微信语音聊天功能-IT蓝豹
- Android之简单模仿微信聊天界面
- Android模仿微信语音聊天功能-IT蓝豹
- android 录音问题记录 - 模仿微信聊天录音功能
- 解决类似微信聊天界面软键盘和表情框冲突问题
- 关于Edittext点击弹出软键盘,布局上移标题消失问题,微信聊天界面
- ToolBar+Listview+EditText,类似微信聊天页面软键盘弹出问题
- 关于Edittext点击弹出软键盘,布局上移标题消失问题,微信聊天界面
- h5键盘遮挡输入框问题 、模仿微信输入框失去焦点时隐藏iphone的软键盘和聚焦时出现输入框
- 模仿微信红包
- 模仿微信界面
- 微信聊天界面
- float类型在内存中的表示
- [Linux] Zip 命令归纳
- HTTP状态301、404、200、304等的意思
- HDU 1010 Tempter of the Bone (DFS+剪枝)
- A Stargazer Cheatsheet
- 模仿微信聊天软键盘
- 剑指Offer Java版 链表
- vim 插件管理 spf13-vim
- boostrap表单和输入框组
- Android Studio 优秀插件(二): Parcelable Code Generator
- android中如何实现离线缓存
- VB.Net HashTable 排序問題
- 生成图片验证码类
- IDA导入Jni.h