问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android windowsoftinputmode adjustnothing页面无法滚动为什么

发布网友 发布时间:2022-07-13 13:44

我来回答

1个回答

热心网友 时间:2023-10-31 21:58

首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。
android:windowSoftInputMode属性一共有9个取值,分别是:
stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHidden,stateVisible,stateAlwaysVisible,adjustUnspecified,adjustResize,adjustPan。
我们设置属性的时候,可以在这9个值里面选择一个,也可以用"state...|adjust"的形式进行设置。那么,这些取值到底是怎么影响到软键盘与窗口之间的交互的呢?下面,我们就一个个的测试这9个取值,到底是如何影响软键盘的显示的。
1.stateUnspecified
中文意思是未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认采用的就是这种交互方式,系统会根据界面采取相应的软键盘的显示模式,比如,当界面上只有文本和按钮的时候,软键盘就不会自动弹出,因为没有输入的必要。那么,当界面上出现了获取了焦点的输入框的时候,软键盘会不会自动的弹出呢?这个还真不一定!比如,在下面的这个界面布局中,软键盘并不会自动弹出。

就是说,默认的,在这种界面情况下,系统并不确定用户是否需要软键盘,因此不会自动弹出。但是,为什么说不一定呢?这是因为,如果我们在这个布局的外面,包裹上一个
ScrollView,软键盘就会自动的弹出来了!
如下,在这种布局文件下,软键盘会自动的弹出

复制代码代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="toOther"
android:text="跳转" />

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>

</LinearLayout>

这确实是一个很奇怪的判断方式。因此,我们可以得出结论,当设置属性为stateUnspecified的时候,系统是默认不弹出软键盘的,但是当有获得焦点的输入框的界面有滚动的需求的时候,会自动弹出软键盘。至于为什么非要强调要获取焦点的输入框,这是因为,如果不是输入框获取焦点,软键盘也是不会自动弹出的,让界面不自动弹出软键盘的其中一个解决方案,就是在xml文件中,设置一个非输入框控件获取焦点,从而阻止键盘弹出。

2.stateUnchanged
中文的意思就是状态不改变的意思,我们应该怎么理解这句话呢?其实很好理解,就是说,当前界面的软键盘状态,取决于上一个界面的软键盘状态。举个例子,假如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;如果当前界面是显示的,那么跳转之后的界面,软键盘也是显示状态。
3.stateHidden
顾名思义,如果我们设置了这个属性,那么键盘状态一定是隐藏的,不管上个界面什么状态,也不管当前界面有没有输入的需求,反正就是不显示。因此,我们可以设置这个属性,来控制软键盘不自动的弹出。
4.stateAlwaysHidden
这个属性也可以让软键盘隐藏,但是我暂时还不知道和stateHidden属性的区别,本来想去stackOverFlow上问一下的,但是,Great Wall,呵呵呵...祝愿病魔早日战胜方校长
5.stateVisible
设置为这个属性,可以将软键盘召唤出来,即使在界面上没有输入框的情况下也可以强制召唤出来。
6.stateAlwaysVisible
这个属性也是可以将键盘召唤出来,但是与stateVisible属性有小小的不同之处。举个例子,当我们设置为stateVisible属性,如果当前的界面键盘是显示的,当我们点击按钮跳转到下个界面的时候,软键盘会因为输入框失去焦点而隐藏起来,当我们再次回到当前界面的时候,键盘这个时候是隐藏的。但是如果我们设置为stateAlwaysVisible,我们跳转到下个界面,软键盘还是隐藏的,但是当我们再次回来的时候,软键盘是会显示出来的。所以,这个Always就解释了这个区别,不管什么情况到达当前界面(正常跳转或者是上一个界面被用户返回),软键盘都是显示状态。
说到这里,我联想到了上面的stateHidden和stateAlwaysHidden,我估计区别也是这样的,就是说,stateAlwaysHidden无论如何都是隐藏的,但是如果在跳转到下个界面的时候,软键盘被召唤出来了,那么当下个界面被用户返回的时候,键盘应该是不会被隐藏的,但是,我还没有找到能够跳转到下个界面,还让当前界面软键盘不消失的方法,所以暂时不能验证。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
你好医生我想问下有时过了性生活后老想上厕所又大小便... 电脑开机按f1怎么开机台式电脑开机需要按F1怎么处理 三者30万标准保费 30万左右的车保险多少钱 30万的车 保险 奥数中的余数问题 石家庄市裕华区小岗上新村前不久传出有传销窝点消息可靠吗? 2019公安部曝光77种涉嫌传销项目 2019年传销诈骗项目名单一览 娱乐圈又曝性骚扰,我想说出她的故事 河北省承德市丰宁县的那一带农村7月底是农忙的时间吗?急~~~ 单位招录了10名新员工,按其应聘成绩排名1到10,并用10个连续的四位自然... 安卓切换页面是报红色错误:adjustAdaptiveCoef max=8388608, min=2097152, ut=568是什么原因导致的... 宜家的意大利面好吃吗? 宜家肉酱意面的份量 为什么重铬酸钾洗液能够清洗油污和有机物?洗液是不是一次性使用?洗液失效的标志是什么? 肥皂液属不属于氧化性洗液? 铬酸洗液的强氧化性到底有多强? 氧化性洗液有哪些? 强氧化性洗液有哪些? 如何培养幼儿体育活动的兴趣 龙电集团有限公司怎么样? 哈尔滨东光直埋保温管厂怎么样 哈尔滨市华龙管道防腐保温预制厂怎么样? 哈尔滨塑四塑胶有限责任公司怎么样? 月亮为什么会有圆和弯的变化 钢结构厂房钢柱脚予理螺栓等级为Q235是否正确 我想知道钢结构厂房屋顶梁和钢柱之间都是用螺栓连接的,为什么不用焊接的?螺栓会松动吗? 钢结构厂房螺栓? 鼻炎半年了,睡觉鼻子不通气怎么办 破镜不能重圆的原因是为什么破镜不能重圆 我们中国娃,爱唱中国戏歌词 小米2换屏后不能开机 男主重生后在北京认识刘亦菲带到他买的四合院,后来请李若彤为老师教刘亦菲表演知识的小说 星河战神拯救女神a计划怎么做 星河战神拯救女神a计划1 任务怎么领取 求一部动漫 开头是女主角去一所 由传说中女神拯救而建立的学院读书 学院统一*还有帽子 有一段在火车上 自由女神像是何时运到美国的? 国际瑜伽证哪里考?? 我的显卡被我弄的不支持Direct11 怎么破 我的显卡是怎么了啊??? 明明是DX11,进剑侠情缘3的设置却成了dx9? 效果不好啊 我的显卡显示direct12,但剑网三更新了以后就显示图形设置失败显卡可能不支持directx11,怎么办?QAQ 我的WIN7系统装了Direct 11,启动剑侠三怎么检测是9.0C,如何设置才能让剑侠三识别Direct 11? CF到底维护到几点? CF要维护到几点啊 CF要维护到什么时候呀 请问in comparsion to 和 in comparsion with有差别吗 为什么处理问题要用 how deel with 如何安装各地电视台 黑暗糖水什么意思 市级名师可以不用排队评职称吗 重庆市学科名师几年评一次