在登录界面对软键盘自适应这个蛋疼的问题看起来很简单,一般感觉也就是在mainifest里增加adjustPan/adjustResize就能搞定。但是遇到非文本输入框时就郁闷了。键盘总是会盖住控件。google,baidu若干之后都没有很好方法,借鉴若干之后终于明朗
在RootView上增加一个方法,可以根据键盘弹出的高度差滑动,问题解决! 代码如下:
/** * 软键盘自适应 */ private void adjustSoftKeyboard(){ mMainView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); mContext.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); int screenHeight = mContext.getWindow().getDecorView().getRootView().getHeight(); int heightDifference = screenHeight - r.bottom; int scrollY = mMainView.getScrollY(); if (null != mLoginBtn && heightDifference != 0) { int viewBottom = mLoginBtn.getBottom(); int needScroll = viewBottom + heightDifference - mMainView.getMeasuredHeight() - scrollY; mMainView.scrollBy(0, needScroll); return; } else if(heightDifference == 0){ //键盘关闭时 mMainView.scrollBy(0, -scrollY); return; } } }); }