android 方向键控制,Android中控制软键盘的方法总结

本文详细介绍了在Android开发中如何通过配置`android:windowSoftInputMode`属性以及使用`InputMethodManager`服务来控制软键盘的显示和隐藏。分析了各种属性和方法的使用场景和注意事项,包括`stateAlwaysVisible`与`stateVisible`的区别,以及`showSoftInput()`和`hideSoftInputFromWindow()`的方法细节。
摘要由CSDN通过智能技术生成

Android开发中,对键盘的控制是家常便饭。我们一般通过两种方式控制键盘的行为,一种是在Activity中配置相关属性,另一种是直接调用系统提供的方法。

AndroidManifest中配置

AndroidManifest文件的Activity中有一个名为android:windowSoftInputMode的属性,通过配置该属性可以实现对软键盘行为的一些控制。这个属性有有以下可配置的值

stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

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

stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

stateVisible:软键盘通常是可见的

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

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

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

adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

stateAlwaysVisible与stateVisible属性看上去是一样的效果,其实有小小的不同之处。举个例子,当我们设置为stateVisible属性,如果当前的界面键盘是显示的,当我们点击按钮跳转到下个界面的时候,软键盘会因为输入框失去焦点而隐藏起来,当我们再次回到当前界面的时候,键盘这个时候是隐藏的。但是如果我们设置为stateAlwaysVisible,我们跳转到下个界面,软键盘还是隐藏的,但是当我们再次回来的时候,软键盘是会显示出来的。所以,这个Always就解释了这个区别,不管什么情况到达当前界面(正常跳转或者是上一个界面被用户返回),软键盘都是显示状态。

stateAlwaysHidden和stateHidden不知道是不是也是一样的区别,没有验证。知道的同学还望赐教。

一般来说,在给它设置值的时候都是一个stateXXX + 一个adjustXXX,值之间用|分割开。用的比较多的还是"stateHidden|adjustResize"和"stateHidden|adjustPan"这两对组合。

"adjustResize"在使用时布局会被软键盘顶上去,体验非常不好

"adjustPan"在使用时获取焦点的控件下边的View将会被软键盘覆盖

不知道各位在开发中有没有遇到需要监听软键盘弹出或隐藏的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值