Android输入法遮挡了输入框,使用android:fitsSystemWindows="true"后界面顶部出现白条

东方客主 等级 1209 0 0
标签:

问题

1、页面布局文件:

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_order_detail"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical"> 

2、配置文件不设置android:windowSoftInputMode属性;
效果图:

Android输入法遮挡了输入框,使用android:fitsSystemWindows=

image

3、加入android:fitsSystemWindows="true"后,解决了输入法遮挡了输入框的问题,但是界面顶部出现了状态栏高度的白条。

解决方法

1、自定义CustomLinearLayout(因为我页面最外层是LinearLayout)继承LinearLayout,重写fitSystemWindows和onApplyWindowInsets两个方法:

public class CustomLinearLayout extends LinearLayout {
    public CustomLinearLayout(Context context) {
        super(context);
    }

    public CustomLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public CustomLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

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

2、修改布局文件:

<com.example.widget.CustomLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_order_detail"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical"> 

3、配置文件不设置android:windowSoftInputMode属性;
4、效果图:

Android输入法遮挡了输入框,使用android:fitsSystemWindows=

image.png

问题解决。

收藏
评论区

相关推荐

Android 自学必备网站
一,Android 自学网站给 Android 自学者朋友推荐几个自学网站:1. Android Developers作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理解体会。网站:https://developer.android.com/2. Android专业中文社区Android专业
Android输入法遮挡了输入框,使用android:fitsSystemWindows="true"后界面顶部出现白条
问题1、页面布局文件:<LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:id"@+id/layoutorderdetail" android:layoutwidth"matchparent" android:layoutheigh
Android深入四大组件(一)应用程序启动过程(前篇)
Android框架层 Android深入四大组件categories: Android框架层本文首发于微信公众号「后厂技术官」 前言在此前的文章中,我讲过了Android系统启动流程和Android应用进程启动过程,这一篇顺理成章来学习Android 7.0的应用程序的启动过程。分析应用程序的启动过程其实就是分析根Activity的启动过程。<!more 1
Android解析WindowManagerService(一)WMS的诞生
Android框架层 Android系统服务 WindowManagerService Android框架层本文首发于微信公众号「后厂技术官」 前言此前我用多篇文章介绍了WindowManager,这个系列我们来介绍WindowManager的管理者WMS,首先我们先来学习WMS是如何产生的。本文源码基于Android 8.0,与Android 7.1.2
全靠这份Android知识点PDF大全,月薪30K
第一阶段:Android 基础知识回顾: 回顾Android 开发编程,深入理解Android系统原理和层次结构,深入分析Handler源码和原理; 回顾Java,C/C++,Kotlin、dart 在Android开发中必用的语言,熟悉一下几种语言混淆后的特性; 回顾Android IPC和JNI的底层原理和热更新技术回顾Native开发要点,使用C++结
多渠道打包进阶知识
多渠道打包进阶知识文章开始前,先看一下下面这种情况:android productFlavors //100 个多渠道配置 //多渠道签名的配置 signingConfigs xiaomi storeFile file("../xiaomi.keystore") storePasswor
2020年了,Android后台保活还有戏吗?看我如何优雅的实现!
1、引言 ======= 对于移动端IM应用和消息推送应用的开发者来说,Android后台保活这件事是再熟悉不过了。 自从Android P(即Android 8.0)出现以后,Android已经从系统层面将后台保活这条路给堵死了(详见:《[Android P正式版即将到来:后台应用保活、消息推送的真正噩梦](https://www.oschina
2020年了,Android后台保活还有戏吗?看我如何优雅的实现!
1、引言 ======= 对于移动端IM应用和消息推送应用的开发者来说,Android后台保活这件事是再熟悉不过了。 自从Android P(即Android 8.0)出现以后,Android已经从系统层面将后台保活这条路给堵死了(详见:《[Android P正式版即将到来:后台应用保活、消息推送的真正噩梦](https://www.oschina
ARouter使用随记
[官方文档地址](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Falibaba%2FARouter%2Fblob%2Fmaster%2FREADME_CN.md) 其他配置 1.创建一个config.gradle ext{ isDeb
Android #Android开发环境搭建
* Android #Android开发环境搭建 ====================== * 1.下载:Google在国服的官网 ----------------- https://developer.android.google.cn/index.html
Android O seLinux 编译错误
编译android O源码,遇到错误 FAILED: out/target/product/hon450/obj/ETC/sepolicy_intermediates/sepolicy /bin/bash -c "(out/host/linux-x86/bin/secilc -M true -G -c 30 out/target/prod
Android Studio3.1.0升级问题记录
每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1、Gradle 是4.1升级后为:Android Studio 3.1.0、Gradle 为4.4。 升级完成后先是报一堆错(每次都升级都是-。-) 第一个错如下: ------- The SourceSet 'in
Android之ClassLoader和插件
Android之ClassLoader和插件 ====================== Android中的ClassLoader本质上跟JRE中的一样,但Android的字节码格式不一样,Android下的ClassLoader不能直接加载普通的jar包,需要使用dex2jar工具中的d2j-jar2dex.bat,  把jar转换为classe
Mac下 android stutio 开发环境搭建
android的相关下载一般都是不能直接走官网的。所以分步骤来实现。 1. 在www.android-studio.org下载studio和sdk,并分别解压、安装。 2. 直接运行studio时, 会卡在一个界面很久。解决方法如下:在android studio安装目录下的bin目录下找到idea.propreties文件,在最后加上一句 
ReactNative遇到的坑总结(持续更新)
**问题:在Android中 input组件,文字会有遮挡** 在Android中,input组件默认会有内边距,所以把padding改为0可以解决问题 **问题:在Android中 input组件,底部会有条白线** 添加红色的属性underlineColorAndroid > <TextInput > > placeholder="搜索关键字"