在一个界面中,会遇到EditText编辑框,会要求当EditText获取焦点的时候,整个布局向上推。
这是一个专门的工具类,只需要相应的布局即可。
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); } } }); }上面中代码中填写的布局是整个xml文件中的跟布局。