Fragment中聊天EditText遮挡底部输入框解决办法

Android 同时被 2 个专栏收录
4 篇文章 0 订阅
6 篇文章 0 订阅

Fragment中EditText遮挡底部输入框解决办法

背景:
   在Android实现了沉浸式功能后,在有输入框的界面,当点击输入框弹起输入法时,输入法遮挡住了输入框,或者输入框在底部并没有随着输入法弹起而弹起。
解决方法:

在EditText的根布局添加

android:fitsSystemWindows=“true”
代码即可解决。

等等还没解决…
界面会多出一块布局 这块布局和顶部状态栏高度一样 颜色可能也一样。很狗血的。

解决办法

自定义一个CustomRelativeLayout,重写fitSystemWindows和onApplyWindowInsets方法,完美解决啦

public class CustomRelativeLayout extends RelativeLayout {
    public CustomRelativeLayout(Context context) {
        super(context);
    }

    public CustomRelativeLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomRelativeLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    protected boolean fitSystemWindows(Rect insets) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            insets.left = 0;
            insets.top = 0;
            insets.right = 0;
        }
        return super.fitSystemWindows(insets);
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            return super.onApplyWindowInsets(insets.replaceSystemWindowInsets(0, 0, 0, insets.getSystemWindowInsetBottom()));
        } else {
            return insets;
        }
    }
}
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值