简单的几行代码解决键盘遮挡登录或注册按钮
-
在项目开发中,这种情况是十分常见的,尤其是在登录界面,登录按钮经常被键盘挡住,导致用户输入完账号之后需要关闭键盘,然后再输入密码,然后再关掉键盘,点击登陆。十分繁琐,一旦用户输入错误,就要重复上述步骤。
-
今天的这个小案例,就是一次性解决键盘遮挡问题,动态的计算,登陆按钮显示需要的高度,进而滚动布局,使之每次输入,键盘都无法遮挡输入框以及按钮。
来一张效果图:
在MainActivity加上这段代码就行了
/** * 获取main在窗体的可视区域 * 获取main在窗体的不可视区域高度 * 判断不可视区域高度 * 1、大于100:键盘显示 获取Scroll的窗体坐标 * 算出main需要滚动的高度,使scroll显示。 * 2、小于100:键盘隐藏 * * @param main 根布局 * @param scroll 需要显示的最下方View */ public void addLayoutListener(final View main, final View scroll) { main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); main.getWindowVisibleDisplayFrame(rect); int mainInvisibleHeight = main.getRootView().getHeight() - rect.bottom; if (mainInvisibleHeight > 100) { int[] location = new int[2]; scroll.getLocationInWindow(location); int srollHeight = (location[1] + scroll.getHeight()) - rect.bottom; main.scrollTo(0, srollHeight); } else { main.scrollTo(0, 0); } } }); }