安卓 android:windowsoftinputmode,Android:windowSoftInputMode="adjustResize"无效解决方法
Android:windowSoftInputMode="adjustResize"无效解决方法
时间:2018-08-16 来源:未知
Android开发中用到软键盘时会出现设置Activity的windowSoftInputMode="adjustResize"失效的问题,这时我们可以在activity的根布局上添加fitsSystemWindows="true",然后adjustResize属性就会起作用。但是这样做还有一个问题,我们的Actionbar会下移一段距离,这段距离的高度相当于状态栏的高度。那么我们该如何解决这个问题,完美使用android adjustresize属性呢?
解决这个问题我们需要自定义一个layout做我们的根布局,在layout中重写fitSystemWindows()和onApplyWindowInsets()方法,具体如下:
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;
}}}
经过以上的操作之后,就可以很完美的解决windowSoftInputMode="adjustResize"无效问题了,分享就到这里,如果对大家有所帮助,请继续关注我们,我们会持续更新更多优质技术文章!
安卓 android:windowsoftinputmode,Android:windowSoftInputMode="adjustResize"无效解决方法相关推荐
- android 4.4 锁屏密码,安卓手机忘记锁屏密码怎么办?安卓手机绕过锁屏密码的几种解决方法...
在2003年有一部冯小刚执导的电影叫作<手机>相信不少人都看过,那句做人要厚道的经典台词流传至今.电影讲述的是男主角手机中隐藏着的秘密被妻子发现而引发的一系列故事,从此手机又有了一个外号叫 ...
- android电视盒子解码很慢,安卓电视/盒子很卡很慢原因及解决方法
原标题:安卓电视/盒子很卡很慢原因及解决方法 安卓电视以及机顶盒跟手机一样,在使用时间久了就会出现一些卡顿的现象,今天小编帮大家总结了一些导致安卓电视.盒子卡顿的原因,并且根据这些原因提出解决的办法, ...
- 一张壁纸使 Android 手机集体变砖,目前尚无解决方法,移动应用开发
一张壁纸使Android手机集体变砖,目前尚无解决方法 图为"肇事"的壁纸,大家不要轻易尝试! 而后,该用户又发布了一条推文表示,不止是三星的手机,他的 Google Pixel ...
- Android Studio 模拟器卡慢、占内存解决方法
Android Studio 模拟器卡慢.占内存解决方法 Android Studio 模拟器卡慢.占内存解决方法 在使用Android virtual device来进行调试运行时会比较慢,性能也不 ...
- Android 源码编译及常见错误及解决方法
Android 源码编译及常见错误及解决方法 参考文章: (1)Android 源码编译及常见错误及解决方法 (2)https://www.cnblogs.com/kyyblabla/p/360393 ...
- android webview file,Android WebView 不支持 H5 input type=file 解决方法
最近因为赶项目进度,因此将本来要用原生控件实现的界面,自己做了H5并嵌入webview中.发现点击H5中 input type="file" 标签 不能打开android资源管理器 ...
- Android NDK: WARNING: Ignoring unknown import directory:错误解决方法
Android NDK: WARNING: Ignoring unknown import directory:错误解决方法 添加NDK模块路径(参考,具体视情况): NDK_MODULE_PATH ...
- Android 8.0 的部分坑及对应解决方法
Android 8.0 的部分坑及对应解决方法 参考文章: (1)Android 8.0 的部分坑及对应解决方法 (2)https://www.cnblogs.com/nesger/p/9483582 ...
- Android实际开发中的bug总结与解决方法(一)
Android实际开发中的bug总结与解决方法(一) 参考文章: (1)Android实际开发中的bug总结与解决方法(一) (2)https://www.cnblogs.com/ywq-come/p ...
最新文章
- 2022-2028年中国操作系统行业深度调研及投资前景预测报告
- Spring导入配置类或文件
- 商业领袖摘下帽子才能炼成极致
- Nexus刷官方下载的映像_occam
- 小学计算机试教教案,小学信息技术人教版三年级下册第7课《轻轻松松来上网》优质课公开课教案教师资格证面试试讲教案...
- d06调试详细说明_D06电脑板调试软件使用说明_20100706
- java第五章抽象类与接口5.1-5.3 2020.3.27+31
- java jcsh执行linux命令,java jcsh执行linux命令
- python编程求n的阶乘_使用Python编程的阶乘
- 王道训练营Day24——Linked
- 流水线上的农民:我在工厂种蔬菜
- [完全免费] 在线UML State Diagram 状态机图工具 - 教程第7部分
- 湖南师范大学2018年大学生程序设计竞赛新生赛小名的回答
- php机房图形资产管理系统,机房资产管理系统(CMDB)
- 论文的正确打开方式—如何细读一篇论文分享
- 语音信号短时平稳特性
- 网站页面SEO优化方案
- VisionMaster 4.0.0 的Modbus通信
- Linux安装NLG-Eval
- 8.时间频度和时间复杂度
热门文章
- 在Spring Boot中加载初始化数据
- Spring Cloud sleuth with zipkin over RabbitMQ教程
- Linux 串口 gprs at,linux下GPRS模块使用AT命令实现拨接电话,发中英文短信
- 避坑_node-sass安装问题及解决办法
- 12行代码AC-Leecode 598. 范围求和 II——Leecode每日一题系列
- 史上最全总结!Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析
- 【终极方法】Unknown initial character set index ‘255‘ received from server. Initial client characte
- [leetcode] 142.环形链表2
- Linux ENSP 搭建DHCP服务器并实现中继和Linux 下搭建DNS服务器(2个实验可跟做)
- Redis数据库(一)——Redis简介、部署及常用命令