相信微信聊天大家都不陌生,大家在聊天的时候会发现,每次点击输入框后弹起的软键盘,会让当前的聊天界面整体向上移动。这种效果,要如何实现呢?在谷歌了很多资料后,尝试了以下三种方式:
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,继承了以下几个函数:
Android 软键盘弹起引起布局的变化
最新推荐文章于 2024-08-18 22:01:07 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)