Android 全屏模式下输入框被遮挡问题处理

Android 全屏模式下输入框被遮挡问题处理

前些天,在做一个页面表单输入需求时,由于我们项目添加了全屏沉浸式状态栏,所以遇到了键盘挡住输入框的问题,简单处理了一下,又发现即使做到键盘不遮挡输入框,又会把页面顶上去,看起来及其不美观。

1. 问题如下:

情况一:键盘挡住输入框
键盘挡住输入框

情况二:页面整体被顶上去

添加代码如下:

 <activity
            android:name=".activity.AddGoldActivity"
            android:windowSoftInputMode="adjustPan|stateHidden" />

页面整体被顶上去

2. 解决方案

先来看一下实现后的效果:
实现后的效果

3. 解决思路:监测到键盘弹起时,重新绘制页面

  1. 导入:InputHandleUtil 工具类,之前导入 ZyFrame 框架的小伙伴,可以直接调用

    框架地址:https://github.com/Sunnyfor/ZyFrame 点击查看

    在线依赖:implementation ‘com.github.Sunnyfor:ZyFrame:1.4.3’

  2. 调用:InputHandleUtil().handleInputView(rootView, scrollView, ignoreView)

    参数说明:

    (1)rootView:必传参数,系统的根布局view (android.R.id.content)
    (2)scrollView:非必传,包含 EditText 的 ScrollView
    (3)ignoreView:非必传,想要忽略的View,键盘弹出时,不显示此 view,例如:底部提交按钮
    注:后两个参数是配合使用的

效果一: 底部按钮跟随弹起
InputHandleUtil().handleInputView(rootView)
效果一

效果二: 底部按钮不跟随弹起
InputHandleUtil().handleInputView(rootView, scrollView, ignoreView)
效果二
效果三:对于底部是输入框的情况也同样适用
底部输入框

4. 工具类代码如下:

/**
 * Desc 用于处理全屏模式下输入框被遮挡问题
 * Author ZY
 * Date 2021/3/16
 */
class InputHandleUtil {
   
   
    private var mRootView: ViewGroup? = null
    private var rootViewParams: FrameLayout.LayoutParams? = null
    private var rootViewMargin = 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值