安卓软键盘弹起时想向上平移布局但布局却被挤压得解决办法
来源:互联网 发布:业务员管理客户软件 编辑:程序博客网 时间:2024/05/16 05:38
自己做项目得时候遇到得问题,在网上找了很多得解决方案,比较多得文章提供得在Manifests中当前得Activity中添加windowSoftInputMode中一个某一种属性来达到平移得效果,可是经过测试后感觉效果都不理想,后来想到了,既然是在软键盘弹起得时候进行得操作,可不可以监听键盘的点击事件来对布局进行更改呢,在网上搜索安卓源码但是没有找到关于键盘得api,还好有大神于是看到了如下得代码;
private RelativeLayout mRootView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); //这是我的根布局 mRootView = (RelativeLayout) findViewById(R.id.rl_root); //获取屏幕高度 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); final int screenHeightscreenHeight = metrics.heightPixels; //因为系统没有直接监听软键盘API,所以就用以下方法 mRootView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { //当界面大小变化时,系统就会调用该方法 Rect r = new Rect(); //该对象代表一个矩形(rectangle) mRootView.getWindowVisibleDisplayFrame(r); //将当前界面的尺寸传给Rect矩形 int deltaHeight = screenHeight - r.bottom; //弹起键盘时的变化高度,在该场景下其实就是键盘高度。 if (deltaHeight > 150) { //该值是随便写的,认为界面高度变化超过150px就视为键盘弹起。 mRootView.setBackground(null); } else { mRootView.setBackgroundResource(R.drawable.login_background_img); } } }); }
代码出自此链接文章
这样对键盘的点击监控事件就有了,问题在于最后得if和else判断,在大于150dp得时候键盘弹起来会改变布局,问题是会怎样改变。几经思考无果,我的朋友帮我问了苹果组的做法,顿时豁然开朗,因为苹果得很多方法都是封装好的,本来以为苹果的键盘弹起来就是向上顶布局的,看了之后才发现实际上是将上面得布局藏起来,安卓里藏起来就是隐藏布局了,于是将安卓得布局重新进行了调整,把想要顶上去得部分写上id,然后在if中setVisibility(View.GONE);在else中setVisibility(View.VISIBLE);
阅读全文
1 0
- 安卓软键盘弹起时想向上平移布局但布局却被挤压得解决办法
- Android设置软键盘弹出时不挤压当前布局
- 软键盘挤压布局的问题
- 安卓监听软键盘弹起关闭动态控制布局组件显示于隐藏,汉字写的教程,一看就懂~!
- 使用MUI 软键盘弹起挤压页面
- 如何解决软键盘干扰挤压布局控件的问题
- 安卓布局被软键盘顶上去的解决方案
- Android 软键盘弹起引起布局的变化
- 安卓软键盘弹开时挤压界面
- android 软键盘弹出,布局没有整体向上顶问题
- TextView输入文本时Android软键盘出现时把布局向上顶
- 解决在软键盘弹出的时候挤压或者遮盖原有的布局
- 解决软键盘弹起导致gridview的布局错乱的方法(转载)
- 软键盘弹出后重新布局(把布局向上顶)
- 仿映客直播底部聊天框弹起不会挤压布局(兼容虚拟按键手机)
- js防止安卓手机软键盘弹出挤压页面导致变形的方法
- 软键盘顶布局
- EditText小键盘弹起布局
- RocketMQ架构和JVM / Linux配置
- Linux高级命令汇总
- 最新版勤哲Excel服务器V2016.12.0.292无限用户支持手机APP,微信,网页等功能不绑定电脑,任意安装,支持后续升级。 这个版本发布过之后,再发布新的版本需要到下个月的中下旬,老朋友可以使
- 问题总结
- kubernetes初级安装
- 安卓软键盘弹起时想向上平移布局但布局却被挤压得解决办法
- nginx——linux下的安装
- 网站收集
- 怎样拆分ABBYY FineReader中文档
- c++primer plus阅读笔记(二)
- [js高手之路]gulp教程-从入门到项目中快速上手使用
- 默认关闭数据流量
- C++中的异常处理(一)
- linux读写锁