有时候在登陆界面,登陆按钮 有可能靠下方些,当输入用户名密码时,输入法 遮挡住了 登陆按钮,对用户的体验不是很好,
下面我说一下我的解决思路:
1,相信很多人,如果没遇到过的话,显示 各种百度,各种论坛去找答案,然而,就是没有找到,合适的
2,很多人,会说,那qq和微信不是做到了么,那是 他们自己定义的输入法,可以获取输入法的高度,
系统的输入法的高度是不好获取的,只能获取输入法是否弹出于隐藏,
我也是搞了很久 才搞定,
方法还是 请教的同事,
废话不多说,直接贴代码
首先:
清单文件里面配置: Android:windowSoftInputMode="adjustPan|stateHidden" android:windowSoftInputMode="adjustResize|adjustUnspecified|stateHidden"
在需要组件上移的Activity 加入以下代码:
//代码里面配置 View decorView = getWindow().getDecorView(); View contentView = findViewById(Window.ID_ANDROID_CONTENT); decorView.getViewTreeObserver().addOnGlobalLayoutListener(getGlobalLayoutListener(decorView, contentView));
private ViewTreeObserver.OnGlobalLayoutListener getGlobalLayoutListener(final View decorView, final View contentView) { return new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); decorView.getWindowVisibleDisplayFrame(r); int height = decorView.getContext().getResources().getDisplayMetrics().heightPixels; int diff = height - r.bottom; if (diff != 0) { if (contentView.getPaddingBottom() != diff) { contentView.setPadding(0, 0, 0, diff); } } else { if (contentView.getPaddingBottom() != 0) { contentView.setPadding(0, 0, 0, 0); } } } }; }
就可以 实现 以下的效果了,
原文网址:http://blog.csdn.net/qq_26665903/article/details/52026732