推荐安卓开发神器(里面有各种UI特效和android代码库实例)
在做登录和注册页面的时候,经常会遇到诸如软键盘挡住输入框的情况,android为此提供了一系列的的配置参数供选择,你可以在androidmanufist.xml的对应Activity的windowSoftInputMode属性中选择如下4者之一进行配置(紫色字):
int | SOFT_INPUT_ADJUST_NOTHING |
Adjustment option for set to have a window not adjust for a shown input method. |
int | SOFT_INPUT_ADJUST_PAN |
Adjustment option for 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 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 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分配机制得到的额外空间。
图1
图2
图3
代码实现方式为:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
但是,这样的配置方法一般都很难完全满足需要,有得应用会做得比较好,让顶上去的Layout能够通过scrollbar滚动。这种解决方法网上有各种介绍,本人也是第一时间从网上找解决方法参考,但最终发现都并未把原理说清,而且大多数有错误,或者有多余配置,于是,我从android系统中源码中找参考案例,在Email应用中,找到了我想要的。效果如图4,5。
图4
图5
其对应的Activity是AccountSetupBasics.java,对应的xml文件为account_setup_basics.xml。
来学习下它的xml写法:
1 它完全把ScrollView作为了一个根Layout,而不是网上好多文章写的在一个Linearlayout里面嵌入一个ScrollView(貌似这种是行不通的)。
然后把我们原来的根Layout搬入ScrollView(ScrollView只能有一个子控件),我查了下androidmanifist.xml和代码,未做任何以上2种方法的配置。
2 它定义了2个0dip的View帮助分配空间(设置其weight吃掉剩余空间,保证输入框处于界面中心位置),可以猜测出这里系统调用的是SOFT_INPUT_ADJUST_RESIZE参数,当所有有实际内容的控件空间总和超出特定范围时,ScrollView开始发挥作用。
如此,完美的解决我们遇到的问题。
另外,网上有人说想用SOFT_INPUT_ADJUST_RESIZE ,但又不希望背景图片被压缩,只要按如上方法把Linearlayout的背景图片设置好即可。
相关推荐
禁止软键盘弹出,自定义键盘
网上搜到很多关于这方面的介绍,最流行的就是在压缩模式下通过监听onLayout()函数来实现的监听,这种方法可能不适合希望在软键盘弹出时控件平移而非压缩需求的开发者,因此,我们的需求就是在符合任意控件在软键盘...
监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕...
Android 底部控件随软键盘弹出而上移demo
近乎完美的监听软键盘的弹出与收起的
android无软键盘弹出的EditText, 获取焦点也不会弹出.
Qt交叉编译aarch64-linux-gnu-运行在zynq板上,调用软键盘后背景全黑的问题。
这里实现的效果是: (1)当软键盘弹出时页面整体上移,当软键盘消失时恢复页面整体下移还原; (2)点击空白区域收起软键盘的效果; (3)输入的11位手机号会格式化成xxx xxxx xxxx格式
通过重写onLayout方法,判断软键盘是否弹出。判断到键盘是否弹出后,就可以做自己想做的事情了。
软键盘弹出时动态改变UI布局学习Demo
解决登录按钮被软键盘覆盖的问题,仿qq登录页面,解决登录按钮被软键盘覆盖的问题,仿qq登录页面
js软键盘.js软键盘.js软键盘.js软键盘
最简单的数字软键盘例子,包含QlineEdit弹出的部分,方便自己根据需要修改。比qt自带的例子inputpanel简单的多。
3种方法实现软键盘监听的,种有一款适合你
Qt开发的软键盘,可以实现中文,英文输入和数字输入,界面还是比较漂亮, 欢迎下载学习。点击输入框中的键盘图标,显示软键盘,再此点击键盘图标,关闭软键盘,软键盘上有关闭功能,多文本框输入软键盘不会关闭。
Android仿微信聊天界面,解决软键盘抬升的小Demo。同时也有包含两张聊天气泡图。对应介绍博客[](https://blog.csdn.net/Allen_Adolph/article/details/106467315)。大家可以看看。谢谢支持!
在全屏、非全屏的情况下,弹出软键盘遇到的坑的解决方法
android edittext不弹出软键盘三种方法“: 方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如: android:label="@string/app_name" ...
jquery软键盘插件点击弹出软键盘输入密码效果
android解决软键盘遮挡