android adjustresize 设置大小,Android中adjustResize失效的解决办法之一-程序员宅基地

技术标签: android adjustresize 设置大小  

今天帮助哥们解决了一个比较蛋疼的问题,就是在有的情况下会出现设置activity的windowSoftInputMode="adjustResize"时,会失效的情况。

历尽千辛万苦,终于在stackflow上找到解决方法。在activity的根布局上添加fitsSystemWindows="true".

然后adjustResize就可以成功的起作用了。但是在这种情况下,你的titlebar会下移statusbar的高度的距离。所以就必须重写一个layout继承自你所使用的layout,并重写其中的两个方法,贴出代码:

public class MyLinearLayout extends LinearLayout{

private int[] mInsets = new int[4];

public MyLinearLayout(Context context) {

super(context);

}

public MyLinearLayout(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)

public MyLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

}

@Override

protected final boolean fitSystemWindows(Rect insets) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

// Intentionally do not modify the bottom inset. For some reason,

// if the bottom inset is modified, window resizing stops working.

// TODO: Figure out why.

mInsets[0] = insets.left;

mInsets[1] = insets.top;

mInsets[2] = insets.right;

insets.left = 0;

insets.top = 0;

insets.right = 0;

}

return super.fitSystemWindows(insets);

}

@Override

public final WindowInsets onApplyWindowInsets(WindowInsets insets) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {

mInsets[0] = insets.getSystemWindowInsetLeft();

Log.e("mInsets[0]",""+mInsets[0]);

mInsets[1] = insets.getSystemWindowInsetTop();

Log.e("mInsets[1]",""+mInsets[1]);

mInsets[2] = insets.getSystemWindowInsetRight();

Log.e("mInsets[2]",""+mInsets[2]);

return super.onApplyWindowInsets(insets.replaceSystemWindowInsets(0, 0, 0,

insets.getSystemWindowInsetBottom()));

} else {

return insets;

}

}

}

自己也记录一下。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35809867/article/details/117603344

智能推荐

Linux期末考试题库(超全)-程序员宅基地

文章浏览阅读8w次,点赞339次,收藏2.4k次。Linux期末考试题库选择题在创建Linux分区时,一定要创建( D )两个分区A. FAT/NTFS  B. FAT/SWAP  C. NTFS/SWAP  D.SWAP/根分区在Red Hat Linux 9 中,系统默认的(A)用户对整个系统拥有完全的控制权。A. root  B. guest  C. administrator  D.supervistor.当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么( B )A. NID B. PID _linux期末考试题库

WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_ivf 2018-程序员宅基地

文章浏览阅读2w次,点赞30次,收藏143次。引子笔者因项目需求,需要做Fortran77代码的MPI并行,因此在 WIN10 下安装了 VS2017 和 Intel Parallel Studio XE 2018 Update 3 Cluster Edition for Windows(以下简称IVF2018Cluster) ,并做相应配置,最终以MPI并行的Hello World程序单机环境运行验证。IVF2018Cluster 版本..._ivf 2018

Optimizing Program Performance-- Capability and limitation of Optimizing Compilers_capability andlimitation-程序员宅基地

文章浏览阅读759次。编译器优化代码的时候, 并不是所有的代码都可以优化的。 有下面两种情况,不能优化。 1. Memory aliasing2. function call 例子11 void twiddle1(int *xp, int *yp)2 {3 *xp += *yp;4 *xp += *yp;5 }67 _capability andlimitation

mysql链接远程报错10061_mysql远程连接报10061-程序员宅基地

文章浏览阅读1.9k次。安装mysql后本地链接可以,远程无法连接。1进入mysql2切换mysql3查看root信息最后发现原因是root用户的权限设置是localhost即只允许本地连接。1更新用户表2刷新权限之后再查看发现root用户的权限已经是 % 了,代表所有访问权限。之后再连接就可以连接了。..._mysql远程连接报10061

Win10 VS2019情况下 安装Caffe_vs 需要安装caffe-程序员宅基地

文章浏览阅读5k次。在VS2019下选择安装MSVC v140 生成工具(VS2015的生成工具还是要安装一下的,比较省事。)安装Windows 8.1 SDK(需要这个SDK,否则要改一堆东西吧。)安装cmake,最新版即可。打开VS2015 x64 native cmd设置环境变量set path=c:\Program Files (x86)\Microsoft Visual Studio\2019\..._vs 需要安装caffe

WARNING: Logging before InitGoogleLogging() is written to STDERR 解决办法-程序员宅基地

文章浏览阅读1.2w次。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar_warning: logging before initgooglelogging() is written to stderr

随便推点

mysql创建表时设置主键id为uuid_mysql创建某个表时给主键定义uuid-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏26次。oracel创建uuid为主键的表时可以直接指定default uuid();但是mysql不支持,可以通过触发器实现。下面是创建一个产品表的sql语句。CREATE TABLE `product` ( `id` varchar(32) NOT NULL, `productNum` varchar(50) NOT NULL, `productName` varchar(50) DEF..._mysql创建某个表时给主键定义uuid

ENVI-met学习博客(一):df-envimet插件_envi-met教程 csdn-程序员宅基地

文章浏览阅读4k次,点赞6次,收藏14次。ENVI-met学习博客(一):df-envimet插件插件贡献者:安东内洛·迪·努齐奥(Antonello Di Nunzio)Antonello的githubdf-envimet插件介绍df-envimet(Dragonfly Envimet)代码将Ladybug,Dragonfly和Gismo连接到Envimet,以进行城市小气候分析。它可以创建Envimet 3D模型(INX),基本仿真文件,并读取建筑物和网格中几乎所有的结果。这个插件需要运行在Rhino和Grasshopper之上。它可_envi-met教程 csdn

2.4g无线芯片G350规格书详细介绍_2.4g无线通讯芯片-程序员宅基地

文章浏览阅读180次。G350是一款高度集成的2.4GHz无线收发芯片,旨在为各种应用提供低成本、高性能的无线通信解决方案。该芯片通过降低功耗,在保持寄存器值条件下,实现最低电流为5μA,从而显著提高了电池寿命。G350支持BLE广播收发,广泛用于BLE电子标签、无线遥控、无线键盘鼠标、无线组网、智能家居、工业和商用近距离通信等领域。总之,G350是一款性能优越、功耗低、功能丰富的2.4GHz无线收发芯片,适用于广泛的应用领域,为物联网和无线通信领域的设备提供了稳定、高效的无线通信能力。_2.4g无线通讯芯片

mysql必知必会第5版pdf_每周一书《SQL必知必会 (第4版)》分享-程序员宅基地

文章浏览阅读8.1k次。内容简介SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能。本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle、SQL Server、MySQL、DB2、PostgreSQL、SQLite等各种主流数据库提供了大量简明的实例。与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述...

通过域名访问路由器配置界面的功能实现_用域名访问路由器 原理-程序员宅基地

文章浏览阅读2.2k次。需求背景:目前路由器的配置界面是通过输入网关IP来访问,市面上其他的路由器可以通过域名来访问,例如腾达路由器的配置界面地址 routendawifi.com。所以我们也希望支持域名访问路由器的配置界面。如在浏览器中输入www.9344base.cn 就可以访问路由器界面。实现原理:一次正常的域名访问流程如下:(1) 客户端向DNS服务器发送域名解析请求,该请求会先发到路由器。(2) 路由器收到DNS请求后会对其进行转发,发给外网的DNS服务器。(3) 外网的DNS服务器收到请求后,进行解析,之_用域名访问路由器 原理

UE4 动画系统 源码及原理剖析_updatemorphvertexbuffer-程序员宅基地

文章浏览阅读1.4w次,点赞33次,收藏105次。UE4 动画系统 动画基础概念 3D模型动画的基本原理是让模型中各顶点的位置随时间变化。主要种类有Morph(变形)动画,关节动画和骨骼蒙皮动画(SkinnedMesh)。从动画数据的角度来说,三者一般都采用关键帧技术,即只给出关键帧的数据,其他帧的数据使用插值得到。但由于这三种技术的不同,关键帧的数据是不一样的。Morph(渐变,变形)动画是直接指定动画每一帧的顶点位置,其动画关键中存储的是Mesh所有顶点在关键帧对应时刻的位置。 关节动画的模型不是一个整体的Mesh,而是分成很多部分(_updatemorphvertexbuffer

推荐文章

热门文章

相关标签