android输入框在软键盘的上面

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

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

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


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



评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值