Android软键盘挡住登录按钮的问题
来源:互联网 发布:filco圣手二代 知乎 编辑:程序博客网 时间:2024/06/10 08:35
最近在做公司项目的时候,要求登录的时候,软键盘不能挡住登录按钮,然后本人百度了半天,各种方法都试过了,尝试了各种失败,以下是网上大神们提供的几种方法的罗列:
- 给Activity配置 android:windowSoftInputMode
- 给布局套加上ScrollView
- RelativeLayout,判断软键盘的显示和隐藏,做不同的动作
在多次尝试过之后,遇到几个bug无法解决。在登陆界面的第二个输入框的问题:
1.采用ScrollView.fullScroll(ScrollView.FOCUS_DOWN); 时候,发现光标一直在第一个框,这是因为ScrollView.FOCUS_DOWN始终把焦点置顶
2,采用scrollView.scrollTo(0, scrollView.getHeight()); 时候,发现无法弹出软键盘,当延时设置为300毫秒时候才可以弹出。这是因为第一时间软键盘弹出需要短暂的时间,这时候去设置ScrollView时布局还没有完全重绘完成,也就不会有滑动效果,只有延迟之后就是估量布局稳定了的时候再进行ScrollView上滑才会有效果,这个地方使用过ScrollView的控制滑动的童鞋就应该遇到过!
最后狂刷百度终于找到一个采用在activity里采用动态代码的方式完成软件盘弹出不挡住并做了一定的优化
/** * @param root 最外层布局,需要调整的布局 * @param scrollToView 被键盘遮挡的scrollToView,滚动root,使scrollToView在root可视区域的底部 */ private void controlKeyboardLayout(final View root, final View scrollToView) { root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver .OnGlobalLayoutListener() { @Override public void onGlobalLayout() { KLog.e("BEGIN"); Rect rect = new Rect(); //获取root在窗体的可视区域 root.getWindowVisibleDisplayFrame(rect); //获取root在窗体的不可视区域高度(被其他View遮挡的区域高度) int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom; //若不可视区域高度大于100,则键盘显示 if (rootInvisibleHeight > 100) { KLog.e("SHENGD"); int[] location = new int[2]; //获取scrollToView在窗体的坐标 scrollToView.getLocationInWindow(location); //计算root滚动高度,使scrollToView在可见区域 KLog.e(location[1] + ""); int srollHeight = (location[1] + scrollToView.getHeight()) - rect.bottom; if (srollHeight != 0) { root.scrollTo(0, srollHeight); } } else { //键盘隐藏 KLog.e("THRESS"); root.scrollTo(0, 0); } } }); }
注意要在oncreate里调用controlKeyboardLayout(mRelogin, mLoginLoginBtn);。
1.mRelogin为你的根布局,
2.mLoginLoginBtn为登陆按钮
1 0
- 解决Android软键盘挡住登录按钮的问题!
- Android软键盘挡住登录按钮的问题
- 解决 Android 软键盘挡住输入框的问题
- 解决 Android 软键盘挡住输入框的问题
- Android软键盘挡住输入框问题的终极解决方案
- Android软键盘挡住输入框问题的终极解决方案
- Android软键盘挡住输入框问题的终极解决方案
- Android总结笔记04:仿QQ空间登录UI,解决软键盘弹出挡住输入框的问题
- 软键盘挡住控件的问题
- 仿QQ空间登录UI,解决软键盘弹出挡住输入框的问题
- android软键盘挡住界面
- 教你解决android软键盘挡住输入框问题!
- 教你解决android软键盘挡住输入框问题
- 解决android软键盘挡住输入框问题!
- android软键盘挡住输入框问题 完全解决
- 教你解决android软键盘挡住输入框问题!
- 教你解决 android软键盘挡住输入框问题
- 解决android软键盘挡住输入框表单问题
- 关于IntelliJ IDEA有时候快捷键无效的说明
- 栈区与堆区的内存分配与管理
- 在PostgreSQL中配置并使用vim
- [PAT] B1042
- Spring-ApplicationContextAware
- Android软键盘挡住登录按钮的问题
- 1008. 数组元素循环右移问题 (20)
- 程序员进化之路
- jquery toggle 回调函数的使用
- HDU 5833 Zhu and 772002(高斯消元)
- phpstorm MAC version 2016.2 激活
- 访谈师吉峰:17岁小伙选择互联网闯社会的心酸旅程
- jq上传图片,兼容ie
- Linux udev详解