遇到这么个需求,先看图:

其实是一个软件的登录界面,初始是第一个图的样子,当软键盘弹出后变为第二个图的样子,因为登录界面有用户名、密码、登录按钮,不这样的话软键盘弹出后会遮住登录按钮(其实之前的实现放到了ScrollView里面,监听软键盘弹出后滚动到底部,软键盘隐藏后滚动到顶部,也是可以的)。
最简单的方法就是多加几个冗余的View,根据软键盘的状态隐藏不需要的View,显示需要的View,但这样感觉太挫了,然后就想起了前两年研究的RelativeLayout布局,RelativeLayout中子控件的布局都是相对位置,只需要在软键盘弹出隐藏时改变应用的位置规则就行了。
先来看一下布局文件
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp" tools:context="${packageName}.${activityClass}" > <RelativeLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" > <ImageView android:id="@+id/logo" android:layout_width="150dp" android:layout_height="150dp" android:layout_centerHorizontal="true" android:scaleType="centerCrop"

这篇博客介绍了一个Android应用登录界面如何在软键盘弹出时动态改变布局,以避免软键盘遮挡登录按钮。作者探讨了使用ScrollView的解决方案,并提出使用RelativeLayout布局和OnGlobalLayoutListener监听软键盘状态来实现更优解。通过调整RelativeLayout中子控件的位置规则,实现了软键盘弹出和隐藏时布局的平滑过渡。博客提供了详细的代码示例和注意事项,包括过滤不必要的布局更新以防止无限循环。
最低0.47元/天 解锁文章
8806

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



