private 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); } } });}
参数解释: root 根布局 ;scrollToView 被遮挡view
controlKeyboardLayout(full,tvCount);
软键盘遮挡部分布局问题
最新推荐文章于 2021-05-26 06:31:52 发布