Android软键盘遮挡问题
来源:互联网 发布:小智的淘宝店铺网址 编辑:程序博客网 时间:2024/05/24 07:20
转自 :
http://www.jianshu.com/p/aaf117c49dd7?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq
一、常规布局软键盘遮挡输入焦点解决方案
有时候我们会遇到这种输入焦点比较靠下的情况,常规情况下会使用:
android:windowSoftInputMode=”adjustResize”
android:windowSoftInputMode=”adjustPan”
以下为屏幕剩余空间较多的情况:
软键盘显示方式对比一
以下为屏幕剩余空间较少的情况:
软键盘显示方式对比二
结论:
adjustRezise:压缩布局空余空间供软键盘显示
adjustPan:整体上移布局供软键盘显示
这样就可以根据需要来选择自己适合的方式来显示软键盘了,一般建议使用:adjustPan
二、PopupWindow中软键盘遮挡输入焦点解决方案
不过一旦被遮挡的是PopupWindow内的输入焦点,那么adjustResize/adjustPan的设置就都没效果了。
详见下图:
adjustResize/adjustPan无法解决的情况
那么我们能否通过手动上移布局来解决软键盘遮挡的问题呢?
通过对根View的布局监器听OnGlobalLayoutListener即可实现,代码如下:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_white_board, container, false);
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//下面的代码主要是为了解决软键盘弹出后遮挡住文字录入PopWindow的问题
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);//获取rootView的可视区域
int screenHeight = rootView.getHeight();//获取rootView的高度
keyboardHeight = screenHeight - (r.bottom - r.top);//用rootView的高度减去rootView的可视区域高度得到软键盘高度
if (textOffY > (sketchViewHeight - keyboardHeight)) {//如果输入焦点出现在软键盘显示的范围内则进行布局上移操作
rootView.setTop(-keyboardHeight);//rootView整体上移软键盘高度
//更新PopupWindow的位置
textPopupWindow.update(mSketchView, x, y,
WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
}
}
});
…
return rootView;
}
实现效果如下图:
解决popupWindow遮挡问题
文/彼时芒种(简书作者)
原文链接:http://www.jianshu.com/p/aaf117c49dd7
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- Android软键盘遮挡问题
- android软键盘遮挡输入框问题
- Android 软键盘遮挡问题 windowSoftInputMode
- android 解决软键盘遮挡popwindow问题
- Android开发软键盘遮挡问题汇总
- 软键盘遮挡问题
- 软键盘遮挡问题
- Android 软键盘遮挡
- Android软键盘遮挡问题解决
- android 软键盘遮挡布局
- Android 软键盘遮挡Dialog
- Android WebView 软键盘遮挡输入框问题的解决方法
- android弹出软键盘时,editText被遮挡的问题
- 【Android】EditText 遇到软键盘遮挡底部一点的问题
- Android 模仿QQ登录界面解决软键盘遮挡问题
- Android解决被软键盘遮挡的EditText问题
- Android中弹窗中带有Edittext,软键盘遮挡问题
- Android PopupWindow与软键盘的遮挡问题
- 如何利用Java遍历所有的指定文件目录下的所有文件
- JS window.requestAnimFrameS 是什么意思
- 【IOS类扩展之日期操作】NSDate+Helpers
- php中 -> 和 => 和 :: 的用法 以及 self 和 $this 的用法
- 第十六周项目三 用文件保存学生的名单 ( 不用函数重载 历经千辛万苦终于出来了)
- Android软键盘遮挡问题
- Web 服务编程,REST 与 SOAP
- 聊聊高并发(四)Java对象的表示模型和运行时内存表示
- 关于HDFS数据存储路径
- python 安装
- 浅析过滤敏感词过滤算法(C++)
- 第十三周项目:立体类族共有的抽象类
- 第十六周项目3-电子词典
- wake lock And lightedgreenroom