android输入框显示在软键盘上方

android输入框显示在软键盘上方

 

有时候在界面需要输入的时候,如果输入框在界面的下方,软键盘弹出的时候会遮挡输入框界面,对用户的体验不是很好。

在网上找的别人的解决方案

首先:

 清单文件里面配置:
android:windowSoftInputMode="adjustPan|stateHidden"

android:windowSoftInputMode="adjustResize|adjustUnspecified|stateHidden"

 

在需要组件上移的Activity 加入以下代码

private int mWindowHeight=0;
private ViewTreeObserver.OnGlobalLayoutListener mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        Rect r = new Rect();
        //获取当前窗口实际的可见区域
        getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
        int height = r.height();
        if (mWindowHeight == 0) {
            //一般情况下,这是原始的窗口高度
            mWindowHeight = height;
        } else {
            if (mWindowHeight != height) {
                //两次窗口高度相减,就是软键盘高度
                int softKeyboardHeight = mWindowHeight - height;
                flCont.setPadding(0, 0, 0, softKeyboardHeight);
            }else {
                flCont.setPadding(0, 0, 0, 0);
            }
        }
    }
};

flCont 为你要显示在软键盘上的View。

注册:getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener);

要在onDestroy()时销毁:getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(mGlobalLayoutListener);

xml 布局中最好把父布局,设置成 RelativeLayout   FrameLayout   ConstraintLayout  。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值