Android 输入法布局改变的页面适配
来源:互联网 发布:classic动作数据mmd 编辑:程序博客网 时间:2024/06/05 11:56
需求
- 点击评论输入弹出软键盘
- 点击评论区的Emoji按钮,切换至Emoji输入
- 点击评论区的图片按钮,插入图片
难点
- 切换输入法的时候,自动调整Emoji和图片区域适应键盘高度。
- 当切换至全屏手写,半屏手写时,软键盘高度变化。若软键盘高度变大,输入框会上移;若软键盘高度减少,输入框不会下移。手动调整输入框位置,发现输入框的布局位置已固定,下移会导致输入框不可见,不能解决该问题。最后的解决方案是,手动关闭软键盘,延时10ms再弹出,强制系统重新调整布局。
方案
- 点击评论输入弹出软键盘
EditText的TouchListeer - 点击评论区的Emoji按钮,切换至Emoji输入
onClickListener - 点击评论区的图片按钮,插入图片
onClickListener - 切换输入法的时候,自动调整Emoji和图片区域适应键盘高度。
EditText的getViewTreeObserver().addOnGlobalLayoutListener
listener = new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (getActivity() != null) { int keyboardHeight = getKeyboardHeight(rootView); mIsKeyboardShown = (keyboardHeight > 0); switch (mInputMode) { //弹出软键盘 case IM_KEYBOARD_SHOWN: if (keyboardHeight > 0) { if (mKeyboardHeight != keyboardHeight) { mKeyboardHeight = keyboardHeight; //调整布局高度 } mInputMode = IM_KEYBOARD_INPUT; } break; //软件盘已弹出 case IM_KEYBOARD_INPUT: if (keyboardHeight == 0) { hideInputView(holder, false); } else if (keyboardHeight > 0) { if (mKeyboardHeight != keyboardHeight) { if (mKeyboardHeight > keyboardHeight) { //强制关闭软键盘 getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); //延时,强制显示软键盘 inputManager.hideSoftInputFromWindow(holder.editor.getWindowToken(), 0); holder.editor.postDelayed(new Runnable() { @Override public void run() { getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); inputManager.showSoftInput(holder.editor, InputMethodManager.SHOW_FORCED); } }, 10); } mKeyboardHeight = keyboardHeight; //调整布局高度 } } break; } };
0 0
- Android 输入法布局改变的页面适配
- Android 异常 弹出输入法 布局改变
- Android的输入法监听布局
- android 自定义VIew 动态在页面中改变页面的布局
- Android获取输入法高度——输入法与页面布局无缝切换
- android 输入法模块,根据当前输入法,改变可以切换的输入法数组。
- Android页面的布局优化
- Android改变窗口标题栏的布局
- Android改变窗口标题栏的布局
- Android改变窗口标题栏的布局
- Android改变窗口标题栏的布局
- Android 改变窗口标题栏的布局
- android 动态改变布局控件 的大小
- android-改变标题栏布局。
- Android动态改变布局
- Android动态改变布局
- Android动态改变布局
- Android动态改变布局
- 关于text-align:center的浏览器兼容问题
- 深入理解ArrayList中 toArray(),toArray(T[])方法
- c:if标签因多余空格导致不起作用
- 自定义字符串大小判断my_strcmp()
- mysql数据库备份复制相关
- Android 输入法布局改变的页面适配
- 前端之js数组方法
- [bzoj3172][Tjoi2013]单词
- linux 淘宝npm镜像
- USguns
- 替换Unity脚本模板
- 机器学习(周志华) 参考答案 第一章 绪论
- maven仓库加载问题
- Toast工具类