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

Android fitsSystemWindows 因为DecorView在ViewRootImp#setView(xxx)中1.先通过WMS获取到边框insets的顶部padding和底部padding, 阅读详情

问题: 

1、页面布局文件:

<com.zhy.autolayout.AutoLinearLayout 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属性;

 

效果图:

 

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

 

解决方法:

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

public class CustomLinearLayout extends AutoLinearLayout {
    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使用fitsSystemWindows属性实现–状态栏【status_bar】各版本适配方案 Android使用fitsSystemWindows属性实现–状态栏【status_bar】各版本适配方案 首先我们看下qq的status bar在各个android版本系统中适配:1.Android5.0以上:半透明(APP 的内容不被上拉到状态) 2.Android4.4以上:全透明(APP 的内容不被上拉到状态) 3.Android4.4以下:不占据status bar 这里我们 阅读详情

相关推荐

Pikachu靶场环境搭建(Windows环境下安装详细教程)

Pikachu靶场是一个漏洞测试练习平台。其中包含了常见的web安全漏洞,如果你是一个渗透测试学习者没有靶场的练手,那么pikachu是一个很好的测试平台。

weixin_42857656的博客 1823

android:fitsSystemWindows属性的用法

Android中fitsSystemWindows属性的用法总结 fitsSystemWindows属性是我在学习沉浸式模式时候涉及到的一个知识点,因为涉及到Android不同版本间的区别,所以当时也是云里雾里的,所以今天特意整理一下这个属性。

liugec的博客 1万+

飞牛Docker部署Zerotier后无法访问?三步搞定SSH权限配置!

本文详细解析了在飞牛NAS上通过Docker部署Zerotier后无法访问的常见问题及解决方案。重点介绍了SSH权限配置、tun模块加载和Docker容器权限设置等关键步骤,帮助用户快速解决虚拟网络接口的权限问题,确保Zerotier节点间的正常通信。

qq_27496129的博客 792

Android中fitsSystemWindows详解

1.定义 frameworks/base/core/res/res/values/attrs.xml <!-- Boolean internal attribute to adjust view layout based on system windows such as the status bar.If true, adjusts the padding of this view to leave space for the system windows. Will only take eff

螃蟹变异了的专栏 8294

Fluent新手必看:如何正确解读scaled residuals曲线(附常见问题排查)

本文详细解析了Fluent中scaled residuals曲线的解读方法及常见问题排查技巧。针对continuity残差居高不下、湍流模型收敛困难等典型问题,提供了网格质量检查、边界条件验证和求解策略调整的实用解决方案,帮助CFD新手快速掌握计算收敛性的关键判断标准。

weixin_28698059的博客 377

Win11家庭版如何让Win+R运行CMD默认管理员权限?3种方法实测有效

本文针对Win11家庭版用户,实测了三种让Win+R运行CMD默认获取管理员权限的有效方法。通过分析UAC机制与家庭版功能限制,详细介绍了注册表编辑、快捷方式创建与任务计划程序三种方案的原理、步骤与风险对比,帮助用户根据安全与效率需求选择最佳方案,实现一键高效管理。

sat99的博客 1269

android中fitsSystemWindows

fitsSystemWindows只作用在sdk>=19的系统上就是高于4.4的系统 android:fitsSystemWindows=“true”,这个属性可以给任何view设置,只要设置了这个属性此view的所有padding属性失效.只有在设置了透明状态栏(StatusBar)或者导航栏(NavigationBar)此属性才会生效 当设置了透明状态栏(StatusBar)时: 当为此...

ruanyandong的博客 837

SPICE仿真软件:HSPICE_(20).HSPICE仿真结果的后处理

HSPICE仿真结果的后处理是一个多步骤的过程,包括读取结果文件、可视化、分析和导出。通过使用命令行工具、Python脚本和HSPICE内置工具,可以高效、准确地完成这些任务。Python脚本的灵活性和强大的数据分析能力使其成为后处理的理想选择。自动化处理可以显著提高工作效率,减少人为错误,而高级分析方法可以更深入地理解仿真结果,为电路设计提供有力支持。

kkchenjj的博客 1382

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

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

asdfgh0077的博客 393

51单片机 步进电机正反转控制+Proteus仿真

51单片机 步进电机正反转控制+Proteus仿真 Proteus仿真 实例代码 /*************** ******************/ #include <reg52.h> #define uint unsigned int #define uchar unsigned char uchar code FFW[]= { 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 }; uchar code REV[]= { 0x09,0x

perseverance51博客 2787

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2487

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

我的最外层是LinearLayout,自定义CustomLinearLayout继承LinearLayout,重写fitSystemWindows和onApplyWindowInsets两个方法: public class CustomLinearLayout extends LinearLayout { public CustomLinearLayout(Context cont...

weixin_30414245的博客 611

超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作

CH-x01 通过 2 线 I2C 协议与主机处理器通信

nicole088的专栏 1737

Android控件属性android:fitsSystemWindows="true"的坑

android:fitsSystemWindows=”true”的坑

尼诺和尼可 6114

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

AppBarLayout中android:fitsSystemWindows="true"无效的解决办法

因为在AppBarLayout中对android:fitsSystemWindows进行了修改,故不能正常实现android:fitsSystemWindows="true"的效果。 为了实现沉浸式的一种效果,我在ToolBar里设置了android:paddingTop属性,来抵消掉系统自带状态栏的空间,使ToolBar中内容得以不向上陷入系统状态栏。 <android.support...

fzq2220410984的博客 3017

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用android:fitsSystemWindows="true"遇到的小坑

背景:       在Android实现了沉浸式功能后,在有输入框的界面,当点击输入框弹起输入法时,输入法遮挡住了输入框,或者输入框在底部并没有随着输入法弹起而弹起。 解决方法: 在EditText的根布局添加 android:fitsSystemWindows="true" 代码即可解决。 注意:       必须在EditText的根布局添加,如果不是根布局,在其它位置或节点添...

圣西罗的红与黑 6229

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

Fragment中EditText遮挡底部输入框解决办法 背景: 在Android实现了沉浸式功能后,在有输入框的界面,当点击输入框弹起输入法时,输入法遮挡住了输入框,或者输入框在底部并没有随着输入法弹起而弹起。 解决方法: 在EditText的根布局添加 android:fitsSystemWindows=“true” 代码即可解决。 等等还没解决… 界面会多出一块布局 这块布局和顶部状态栏高度一样 颜色可能也一样。很狗血的。 解决办法 自定义一个CustomRelativeLayout,重写

不一样的烟火 1083

Android设置全屏状态下设置 android:fitsSystemWindows="true"界面会多处块空白区域

项目设置全屏状态,键盘弹出时会遮盖的问题。当再activity跟布局设置android:fitsSystemWindows="true"时会发现屏幕顶部会多出一块空白区域,这块空白区域是多出来的状态栏的高度。如下: 如果不设置android:fitsSystemWindows="true",系统就不会自动调整高度出现白色区域。但是这时候会导致输入框被键盘遮挡。 如果设置了android:f...

lys_优快云_369的博客 9014

再学一遍android:fitsSystemWindows属性

对于android:fitsSystemWindows这个属性你是否感觉又熟悉又陌生呢? 熟悉是因为大概知道它可以用来实现沉浸式状态栏的效果,陌生是因为对它好像又不够了解,这个属性经常时灵时不灵的。 其实对于android:fitsSystemWindows属性我也是一知半解,包括我在写《第一行代码》的时候对这部分知识的讲解也算不上精准。但是由于当时的理解对于我来说已经够用了,所以也就没再花时间继续深入研究。 而最近因为工作的原因,我又碰上了android:fitsSystemWindows这个属性,

郭霖的专栏 3万+

Android - 关于android:fitsSystemWindows="true"的那点事情

常遇问题 1. 系统软键盘问题 描述:当我们在使用的EditText获取焦点时,弹出软键盘,会遮挡住我们的View(见下图) 2. 自定义TitleView的问题       描述:使用自定义TitleView的时候,TitleView会显示到状态栏中(见下图)   解决方法 1. 直接在activity的layout根布局中加入android:fitsS

smileisgood的博客 8510

android fitsSystemWindows的使用

今天,简单讲讲android  fitsSystemWindows的使用。 Android使用fitsSystemWindows属性实现--状态栏【status_bar】各版本适配方案 fitSystemWindows属性:     官方描述:         Boolean internal attribute to adjust view layout ba

谢岩的博客 1万+

【安卓开发】解决顶部导航栏遮挡问题

摘要:解决Android应用中系统导航栏预留问题的方法:1)在布局XML中添加android:fitsSystemWindows="true"属性,但会导致顶部变白;2)通过在Activity中调用setupStatusBar()函数来设置状态栏样式,包括清除透明标志、设置状态栏颜色为primary色,并在API 23及以上版本设置状态栏文字为白色。最终实现了既保留系统导航栏空间又保持界面风格统一的效果。

weixin_43509698的博客 277

Android输入法弹出时覆盖输入框问题

本文来自网易云社区作者:孙有军  当一个activity中含有输入框时,我们点击输入框,会弹出输入法界面,整个界面的变化效果与manifest中对应设置的android:windowSoftInputMode属性有关,一般可以设置的值如下,&lt;activity android:windowSoftInputMode=["stateUnspecified","stateUnchanged”,  ...

IT安全单身狗的博客 675

android解决底部导航栏遮挡问题,Android虚拟导航栏遮挡底部的输入框的解决方法...

1.场景还原最近忙着app的适配,在这个过程问题中,各种机型的奇葩问题都出来了,适配真尼玛痛苦!今天就oppo机型虚拟导航栏遮挡底部的输入框的问题作个记录。① 在该Activity的根layout配置如下属性:android:fitsSystemWindows="true"android:clipToPadding="false"第一个属性:如果为true,将调整系统窗口布局以适应你自定义的布局。...

weixin_33397994的博客 1396

Android输入面板被键盘遮挡的解决办法

在Android开发中,有一些非常不优化的体验,比如输入面板会被软键盘遮盖的问题。如下图。上图是被软键盘遮盖的原图上图是软键盘这个的效果上图是解决之后的效果图。

nanjumufeng的博客 2603

android system window,Android之属性fitsSystemWindows

页面有输入框时都要考虑会不会被键盘挡住,于是fitsSystemWindows属性就派上了用场属性说明fitsSystemWindows属性可以让view根据系统窗口来调整自己的布局;简单点说就是我们在设置应用布局时是否考虑系统窗口布局,这里系统窗口包括系统状态栏、导航栏、输入法等,包括一些手机系统带有的底部虚拟按键。android:fitsSystemWindows=”true” (触发View...

weixin_33701632的博客 1013
下一篇: TextView.setWidth()无效
op-lin
博客等级 码龄9年 1粉丝 13原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值