关于Android软键盘收起导致页面空白的解决方法

这个问题我在开发过程中反复遇到,网上找的资料多数是有两种解决方法

1.在AndroidManifest.xml里面配置adjustResize再配合页面监听软键盘的打开和收起,控制页面滑动来解决;我试了过后发现,这种方法虽然可以解决收起键盘后的空白,但是打开键盘时,软键盘上方会出现一片空白,遮住页面内容,效果不理想;
2.配置adjustPan,这种方法如果是在当前页面打开软键盘的情况跳转到新页面,再返回。这时之前软键盘的位置会呈现空白。也不理想

最后,我试了一个方法基本解决了留白的问题,以下是我的处理方式,希望对你有帮助:

在AndroidManifest.xml里面配置stateAlwaysVisible|adjustPan这两个参数,并且监听软键盘的收起,在收起的时候清除输入框的焦点。这样就可以在打开软键盘的情况避免页面跳转在再返回,导致页面留白。

<activity
    android:name=".activity.SendWriteActivity"
    android:windowSoftInputMode="stateAlwaysVisible|adjustPan" />

注意:要收起的时候清除输入框的焦点

// 获取根布局视图
        val rootView = findViewById<View>(android.R.id.content)
// 添加布局变化监听器
        rootView.viewTreeObserver.addOnGlobalLayoutListener {
            // 获取可见区域的矩形
            val r = Rect()
            rootView.getWindowVisibleDisplayFrame(r)

            // 获取屏幕高度
            val screenHeight = rootView.rootView.height

            // 计算键盘高度
            val keyboardHeight: Int = screenHeight - r.bottom

            // 判断键盘是否收起
            if (keyboardHeight == 0) {
                // 键盘已收起
                // 在此处执行相应的操作,清除焦点
                mmp_right_tv.clearFocus()
            } else {
                // 键盘弹出中
                // 在此处执行相应的操作
            }
        }

另外:我的根部局是用了ScrollView。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值