android输入框在软键盘的上面

来源:互联网 发布:数控车床编程论文 编辑:程序博客网 时间:2024/05/17 17:55

有时候在登陆界面,登陆按钮 有可能靠下方些,当输入用户名密码时,输入法 遮挡住了  登陆按钮,对用户的体验不是很好,

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

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

0 0