如何解决软键盘弹出引起的各种不适
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决软键盘弹出引起的各种不适相关的知识,希望对你有一定的参考价值。
如何解决软键盘弹出引起的各种不适,解决办法如下在做登录和注册页面的时候,经常会遇到诸如软键盘挡住输入框的情况,android为此提供了一系列的的配置参数供选择,你可以在androidmanufist.xml的对应Activity的windowSoftInputMode属性中选择如下4者之一进行配置(紫色字):
int SOFT_INPUT_ADJUST_NOTHING
Adjustment option for softInputMode:
set to have a window not adjust for a shown input method.
int SOFT_INPUT_ADJUST_PAN
Adjustment option for softInputMode:
set to have a window pan when an input method is shown, so it doesn\'t need to deal with resizing but just panned by
the framework to ensure the current input focus is visible.
int SOFT_INPUT_ADJUST_RESIZE
Adjustment option for softInputMode:
set to allow the window to be resized when an input method is shown, so that its contents are not covered by the input method.
int SOFT_INPUT_ADJUST_UNSPECIFIED
Adjustment option for softInputMode:
nothing specified.
<activity android:name=“.LoginAc”
android:label=“@string/app_name”
android:windowSoftInputMode=“stateHidden|adjustResize”>
<intent-filter>
<action android:name=“android.intent.action.MAIN” />
<category android:name=“android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
四个参数意思如下:
SOFT_INPUT_ADJUST_NOTHING: 不调整(输入法完全直接覆盖住,未开放此参数)
SOFT_INPUT_ADJUST_PAN: 把整个Layout顶上去露出获得焦点的EditText,不压缩多余空间,见图1
SOFT_INPUT_ADJUST_RESIZE: 整个Layout重新编排,重新分配多余空间,见图2
SOFT_INPUT_ADJUST_UNSPECIFIED: 系统自己根据内容自行选择上两种方式的一种执行(默认配置)
这里的多余空间指的是控件们通过weight分配机制得到的额外空间。 参考技术A 你可以再控制面板里面改键盘里面有一个重复延时可以更改如果要在程序里面改我建议你看看游戏编程里面第一章就是获取硬件的输入而不是通过WM_CHAR来的
ionic Android软键盘弹出引起的tab被挤上去的解决方案
很多写登录界面的开发者都会遇到一个问题:那就是在登录界面时,当你点击输入框时,下边的按钮有时会被输入框挡住,这个不利于用户的体验,所以很多人希望软键盘弹出时,也能把按钮挤上去。很多开发者想要监听键盘的状态,这无疑是一个很麻烦的做法。
我们可以在AndroidManifest.xml的Activity设置属性:Android:windowSoftInputMode = "adjustResize" ,软键盘弹出时,要对主窗口布局重新进行布局,并调用onSizeChanged方法,切记一点当我们设置为“adjustResize”时,我们的界面不要设置为全屏模式,否则设置了这个属性也不会有什么效果。而当我们设置android: windowSoftInputMode = "adjustPan"时,主窗口就不会调用onSizeChanged方法,界面的一部分就会被软键盘覆盖住,就不会被挤到软键盘之上了。
修改如下:
除了adjustResize、adjustPan当然还有其他属性可以设置:
"stateUnspecified"
软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。
这个是为了软件盘行为默认的设置。
"stateUnchanged"
软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。
"stateHidden"
当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
"stateAlwaysHidden"
软键盘总是被隐藏的,当该Activity主窗口获取焦点时。
"stateVisible"
软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。
"stateAlwaysVisible"
当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
"adjustUnspecified"
它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。
"adjustResize"
该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间
"adjustPan"
该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
以上是关于如何解决软键盘弹出引起的各种不适的主要内容,如果未能解决你的问题,请参考以下文章