文章标题
2016-03-03 01:06
232 查看
关于软键盘的问题记录
1.当软键盘弹出时导致EditText被遮挡
`/**
* @param root 最外层布局,需要调整的布局 * @param scrollToView 被键盘遮挡的scrollToView,滚动root,使scrollToView在root可视区域的底部 */ public void controlKeyboardLayout(final View root, final View scrollToView) { root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); //获取root在窗体的可视区域 root.getWindowVisibleDisplayFrame(rect); //获取root在窗体的不可视区域高度(被其他View遮挡的区域高度) int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom; //若不可视区域高度大于100,则键盘显示 if (rootInvisibleHeight > 100) { int[] location = new int[2]; //获取scrollToView在窗体的坐标 scrollToView.getLocationInWindow(location); //计算root滚动高度,使scrollToView在可见区域 int srollHeight = (location[1] + scrollToView.getHeight()) - rect.bottom; root.scrollTo(0, srollHeight); } else { //键盘隐藏 root.scrollTo(0, 0); } } }); }`
将外部视图进行滚动
2.判断当前软键盘是否显示
/** * 判断当前软键盘是否打开 * @param rootView 得到的Rect就是根布局的可视区域,而rootView.bottom是其本应的底部坐标值, * 如果差值大于我们预设的值,就可以认定键盘弹起了。这个预设值是键盘的高度的最小值。 * 这个rootView实际上就是DectorView,通过任意一个View再getRootView就能获得。 * @return 当前是否显示软键盘 */ private boolean isKeyboardShown(View rootView) { final int softKeyboardHeight = 100; Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); DisplayMetrics dm = rootView.getResources().getDisplayMetrics(); int heightDiff = rootView.getBottom() - r.bottom; return heightDiff > softKeyboardHeight * dm.density; }
通过判断根布局(DectorView)距离屏幕底部的距离,当大与规定的默认值时软键盘显示。
InputMethodManager imm =(InputMethodManager)ac.getSystemService(Context.INPUT_METHOD_SERVICE); //当软键盘显示时隐藏,当隐藏时显示 imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
两个方法结合起来就可以在控制软键盘状态。
相关文章推荐
- Android中监听软键盘显示状态实现代码
- Android自定义View软键盘实现搜索
- 360浏览器文本框获得焦点后被android软键盘遮罩该怎么办
- Android编程之软键盘的隐藏显示实例详解
- Android 显示和隐藏软键盘的方法(手动)
- Android开发之软键盘用法实例分析
- 页面未随软键盘上升及android隐藏软键盘总结
- android 点击屏幕让软件盘消失
- 解决Popupwindow挡住软键盘问题
- 这样才真正实现了页面加载完之后EditText直接弹出数字软键盘
- android中关闭软键盘
- WebAPP输入框被软键盘遮挡肿么办?
- 在UI线程的oncreate方法中,操作软键盘无效
- 打开/关闭系统的软键盘
- android软键盘相关
- Android机型适配之软键盘和输入法
- Android 强制隐藏软键盘
- android 一进入view就弹出软键盘的问题
- Android软键盘隐藏
- 自定义软键盘Enter键(解决软键盘弹出挡住下一个表格单的输入而造成的反复操作)