ViewPager下方的MyButtons在TabLayout的EditText获焦时随软键盘上移问题
解决TabLayout中EditText获焦时底部按钮随软键盘上移的问题
嘿,这个场景我之前做项目时也踩过坑!本质是软键盘弹出时系统的布局调整逻辑和咱们的布局结构没匹配上,下面给你几个实用的解决办法:
1. 先修正根布局的高度设置
看你提供的布局代码,根RelativeLayout的android:layout_height设成了wrap_content,这是个关键问题!wrap_content会让整个布局的高度跟着内容动态变化,软键盘弹出时内容区域被压缩,整个布局就会往上缩,底部按钮自然就跟着上来了。
把它改成match_parent,让根布局占满整个屏幕高度:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/create_case_activity" android:layout_width="match_parent" android:layout_height="match_parent" <!-- 这里改成match_parent --> android:background="@drawable/lb_background" tools:context="com.cubesquaretech.lawbuddy.Activity.CreateCaseActivity">
2. 固定底部按钮的位置
确保你的MyButtons控件设置了android:layout_alignParentBottom="true",让它牢牢钉在屏幕底部:
<com.yourpackage.MyButtons android:id="@+id/my_buttons" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" <!-- 其他属性 --> />
同时,给ViewPager设置正确的布局约束,让它填充AppBarLayout和底部按钮之间的空间(假设AppBarLayout的id是app_bar):
<android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/app_bar" android:layout_above="@id/my_buttons" />
3. 调整Activity的软键盘模式
最后去AndroidManifest.xml里找到你的CreateCaseActivity,配置windowSoftInputMode,根据你的需求选一种:
- 如果希望软键盘弹出时,底部按钮留在屏幕底部(被软键盘挡住,不随之上移),用
adjustPan:
<activity android:name=".Activity.CreateCaseActivity" android:windowSoftInputMode="adjustPan" />
- 如果希望底部按钮留在软键盘上方(布局自动调整大小,按钮始终在可显示区域的底部),用
adjustResize:
<activity android:name=".Activity.CreateCaseActivity" android:windowSoftInputMode="adjustResize" />
这几步下来,基本就能解决按钮跟着软键盘上移的问题了,你可以根据产品需求选对应的模式~
内容的提问来源于stack exchange,提问作者CodeForMe
相关产品推荐
相关产品推荐

