Android软键盘弹出问题的解决方法

来源:互联网 发布:德国谷歌域名 编辑:程序博客网 时间:2024/05/18 01:51

当点击编辑框弹出软键盘时,如果不做处理,往往会遮住界面上的控件,这会降低用户体验。

解决方法1:
在你的activity中的oncreate中setContentView之前写上这个代码

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

解决方法2:
在项目的AndroidManifest.xml文件中界面对应的里加入,这样会让屏幕整体上移。如果加上的 是 android:windowSoftInputMode=”adjustPan”这样键盘就会覆盖屏幕。

<activity android:windowSoftInputMode="stateVisible|adjustResize". . . >  

分析一下这个android:windowSoftInputMode属性
android:windowSoftInputMode
这个属性用于设置Activity主窗口与软键盘的交互模式,可以用来避免软键盘面板遮挡内容的问题。 这个属性能影响两件事:

当有焦点产生时,软键盘是隐藏还是显示
是否调整Activity主窗口大小以便腾出空间放软键盘
它的设置必须是下面列表中的一个值,或一个”state”值加一个”adjust”值的组合,各个值之间用 | 分开。

stateUnspecified:默认状态,系统将选择一个合适的状态或依赖于主题的设置。
stateUnchanged:当这个Activity出现时,软键盘将一直保持上一个Activity里的状态,无论是隐藏还是显示。
stateHidden:当这个Activity出现时,软键盘总是被隐藏。
stateAlwaysHidden:当这个Activity主窗口获取焦点时,软键盘总是被隐藏。
stateVisible:当这个Activity出现时(Activity中有可以获取输入焦点的控件),软键盘通常是可见的。
stateAlwaysVisible:当这个Activity出现时,软键盘总是弹出。
adjustUnspecified:默认行为,系统将根据窗口中的布局自动调整窗口大小。
adjustResize:这个Activity主窗口总是调整屏幕的大小以便留出软键盘的空间;这个选项不能和adjustPan同时使用,如果这两个属性都没有被设置,系统会根据窗口中的布局自动选择其中一个。
adjustPan:这个Activity主窗口并不调整屏幕的大小以便留出软键盘的空间;相反,当前窗口中获取输入焦点的控件会自动移动到软键盘上方以便用户总是能看到输入内容的部分;这个选项不能和adjustPan同时使用,如果这两个属性都没有被设置,系统会根据窗口中的布局自动选择其中一个。

关于软键盘的弹出与隐藏
contentEdit是控件
弹出软键盘:

InputMethodManager imm = (InputMethodManager) mContext                        .getSystemService(Context.INPUT_METHOD_SERVICE);                imm.showSoftInput(contentEdit, InputMethodManager.SHOW_FORCED);

隐藏软键盘:

InputMethodManager imm = (InputMethodManager) mContext                .getSystemService(Context.INPUT_METHOD_SERVICE);        imm.hideSoftInputFromWindow(contentEdit.getWindowToken(), 0);
0 0