您的位置:首页 > 移动开发 > Android开发

android输入框在软键盘的上面

2016-07-25 19:31 483 查看
有时候在登陆界面,登陆按钮 有可能靠下方些,当输入用户名密码时,输入法 遮挡住了  登陆按钮,对用户的体验不是很好,

下面我说一下我的解决思路:

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);
}
}
}
};
}


就可以 实现 以下的效果了,



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: