1. 描述:
我们看市面上很多应用的登录界面,都是当输入法弹出时,账号输入框和密码输入框都会上移,不会遮住任何一个输入框,而且底部的背景图是不动的。而我们平时布局中,不管是将activity的windowSoftInputMode属性设置为adjustPan还是adjustResize, 要么就是输入框被遮挡,要么就是背景图会上移,体验则比较差。今天我们就以支付宝的登录界面为例,来处理一下这些问题。
老样子,先上图:
2.实现
(1) 问题分析:
a). 背景图不能随着键盘的显示隐藏而移动
b). 键盘显示时不能遮挡账号和密码任何一个输入框
c). 键盘显示时,头像隐藏,键盘隐藏时,头像显示
(2)实现
首先来看第一个问题:背景图不移动。我们知道一个Activity的根View是DecorView,而DecorView中又包含了ActionBar和id为content的FrameLayout,一般不管是压缩布局还是上移布局,其实操作的都是android.R.id.content这个布局,只要设置的背景图在这个布局内,图片要么会上移,要么会压缩,但是只要我们将背景图设置给DecorView,背景图就不会移动,所以只需一句代码即可:
getWindow().getDecorView()

本文介绍了如何实现类似支付宝登录界面的效果,当输入法弹出时,账号和密码输入框上移不被遮挡,背景图保持不动,且键盘隐藏时头像重新显示。通过设置windowSoftInputMode属性,结合KeyboardChangeListener库监听键盘状态,成功避免了输入框被遮挡的问题。
最低0.47元/天 解锁文章
1778

被折叠的 条评论
为什么被折叠?



