2024年6月11日发(作者:)

解决常见的软键盘遮挡的方法

解决常见的软键盘遮挡的方法

一、问题概述

在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往

往会遮住输入界面,我们先看一下问题:

输入密码时输入框被系统键盘遮挡了,大大降低了用户操作

体验,这就是开发中非常常见的软键盘遮挡的问题,该如何解决?

二、简单解决方案

方法1

在你的activity中的oncreate中setContentView之前写上这

个代码

getWindow().setSoftInputMode(Params.

SOFT_INPUT_ADJUST_PAN);

方法2

在 项目的文件中界面对应的里加入

android:windowSoftInputMode=“stateVisible|adjustResize"

这样会让屏幕整体上移。如果加上的 是

android:windowSoftInputMode="adjustPan"这样键盘就会覆盖

屏幕。

关于android:windowSoftInputMode

activity主窗口与软键盘的交互模式,可以用来避免输入法

面板遮挡问题,Android1.5后的一个新特性。

这个属性能影响两件事情:

当有焦点产生时,软键盘是隐藏还是显示

是否减少活动主窗口大小以便腾出空间放软键盘

它的设置必须是下面列表中的一个值,或一个”state。”值加

一个”adjust。”值的.组合。在任一组设置多个值――多

个”state。”values,例如&mdash有未定义的结果。各个值之间

用|分开。

例如:

在这设置的值(除"stateUnspecified"和"adjustUnspecified"以

外)将覆盖在主题中设置的值

各值的含义:

stateUnspecified:软键盘的状态并没有指定,系统将选择一

个合适的状态或依赖于主题的设置

stateUnchanged:当这个activity出现时,软键盘将一直保

持在上一个activity里的状态,无论是隐藏还是显示

stateHidden:用户选择activity时,软键盘总是被隐藏

stateAlwaysHidden:当该Activity主窗口获取焦点时,软键

盘也总是被隐藏的

stateVisible:软键盘通常是可见的

stateAlwaysVisible:用户选择activity时,软键盘总是显示的

状态

adjustUnspecified:默认设置,通常由系统自行决定是隐藏

还是显示

adjustResize:该Activity总是调整屏幕的大小以便留出软键

盘的空间

adjustPan:当前窗口的内容将自动移动以便当前焦点从不被

键盘覆盖和用户能总是看到输入内容的部分

方法3

把顶级的layout替换成ScrollView,或者说在顶级的Layout

上面再加一层ScrollView。这样就会把软键盘和输入框一起滚动

了,软键盘会一直处于底部。

三、代码可控性方法