Android 软键盘弹起引起布局的变化

本文探讨了在Android应用中,当软键盘弹起时如何实现聊天界面类似微信的效果,即界面整体上移。作者尝试了设置AndroidManifest的windowSoftInputMode属性以及通过代码判断软键盘状态的方法,但未能成功。最后通过监听布局变化,自定义LinearLayout并重写onMeasure()、onLayout()和onDraw()方法,成功实现了布局随软键盘弹起而调整的效果。欢迎分享更多解决方案。
摘要由CSDN通过智能技术生成

相信微信聊天大家都不陌生,大家在聊天的时候会发现,每次点击输入框后弹起的软键盘,会让当前的聊天界面整体向上移动。这种效果,要如何实现呢?在谷歌了很多资料后,尝试了以下三种方式:
1.直接在AndroidManifest中修改android:windowSoftInputMode=”stateAlwaysHidden|adjustPan”
然而修改完后运行,依然没啥用处。
2.//判断隐藏软键盘是否弹出 if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED) {
//隐藏软键盘 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
然而结果却是params.softInputMode == WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE的判断总是false。(o(╯□╰)o~~~OTZ)
在试了两次之后,仔细回顾了一下键盘弹起的过程,看看有什么关键点漏了,于是在微信聊天窗口不断点击输入栏弹起键盘,然后又点击回退键隐藏键盘,企图在一起一落间找到思考的方向。就在一瞬间,头脑里闪过了一个点:布局的变化。对,监听布局的变化,每次键盘弹起后整个界面都往上顶了,按照view的渲染原理来说,肯定要触发onMeasure(),onLayout()进而再onDraw()的。于是乎,按照这个思路,自定义了一个LinearLayout,继承了以下几个函数:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值