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