理解 android:windowSoftInputMode 中的属性

前段时间在写一个订奶管理的App,当时遇到了一个问题,就是当点击EditText进行文本输入的时候弹出的软键盘会将底部的tab导航栏顶上去,这种效果给人看了有种太业余的感觉。今天找了个时间研究了windowSoftInputMode中各种属性的作用,下面记录一下,加深一下记忆,顺便把这个问题解决。

软键盘顶起底部tab:

软键盘顶起底部tab

先大致的描述一下 android:windowSoftInputMode 这个属性是干嘛用的,如下:

主要是用来设置软键盘与页面进行交互的模式,避免软键盘的弹出而遮挡住Activity视图中的内容。

<activity android:windowSoftInputMode="stateAlwaysHidden|adjustResize"></activity>

属性设置在 activity 节点中。

state……属性用来控制软键盘的显示状态,显示或隐藏。

adjust……属性用于进行Activtiy窗口的调整,用来调整空间显示软键盘。

state……属性和adjust……属性是可以联合在一起进行设置的,中间通过“|”间隔

下面我们逐一来看一下这些属性(乍看上去还是挺多的╮(╯▽╰)╭)

为了方便描述,这里我们假定第一个点进去的页面为【A_Activity】,第二个点进去的页面为【B_Activity】android:windowSoftInputMode属性设置在A_Activity页面下

这里写图片描述

state相关属性:

  1. 【stateVisiable—可见状态】:当无论从哪个页面跳转到A_Activity页面其中的软键盘总是处于可见状态,及时没有输入框的情况下也能够强制的弹出。

这里写图片描述

2.【stateAlwaysVisible—总是可见状态】: 当无论从哪个页面跳转到A_Activity页面其中的软键盘总是处于可见状态,与stateVisiable状态不同的是,如果我们跳转的页面的软键盘是隐藏的(B_Activity)当我们返回到A_Activity软键盘就会显示出来。

这里写图片描述

3.【stateHidden—隐藏状态】:设置这个状态后软键盘总是不可见的,无论是否有输入的需要,从当前页面(A_Activity)跳转到下一个页面(B_Activity)如果在B_Activity的软键盘开启的情况下返回到上一个页面(A_Activity)此时A_Activity仍然显示软键盘不会将其隐藏。

这里写图片描述

4.【stateAlwaysHidden—总是隐藏状态】: 设置这个状态之后软键盘是不可见的无论是否有输入的需要,与stateHidden不同的时,如果从下个开启的页面(B_Activity)并且软键盘是弹出的,返回到上个页面(A_Activity)此时A_Activity会将软键盘隐藏。

这里写图片描述

5.【stateUnchanged—不改变状态】: 设置这个属性之后,当前页面软键盘的显示状态取决于上一个页面的软键盘的状态。如果上一个页面(B_Activity)处于显示状态则当前页面(A_Activity)也处于显示状态。

这里写图片描述

6.【stateUnspecified—未指定状态】:如果不设置windowSoftInputMode这个属性的时候系统会默认采用这个属性,系统会根据界面采取相应的软键盘的显示模式。

adjust相关属性:

1.【adjustPan】: 通过当前窗口中布局的自动移动以确保焦点位置以及输入框总在用户可以看得到的部位。

这里写图片描述

2.【adjustResize】:该Activity总是调整屏幕的大小以便留出软键盘的空间(这个属性有点晕,感觉是在强调只要保证能空出软键盘的位置就可以了,其他的东西就不在去考虑了,也不再考虑用户是否能看清输入的内容 ++哪位大侠理解请告诉我^^)

这里写图片描述

3.【adjustUnspecified】:默认设置,由系统根据不同的界面选择不同的模式

细心的小伙伴应该注意到了,当我们设置adjustPan属性布局会根据软键盘的弹出而进行向上移动,但是对应着ActionBar也被朝上移动了一段距离,同样的最上面的内容也因为向上移动而被遮挡住了。

我们此时可以通过给要显示的布局的最外层加上ScrollerView,然后设置属性为adjustResize,这样这个问题就解决了O(∩_∩)O哈哈~(adjustPan+ScrollerView尝试过不能解决这个问题)。

解决后:

这里写图片描述

对于刚开始提到的那个问题,看到这里应该想到解决方法了吧,没错,只需要在当前的Activity上面加上 adjustPan这个属性就能够解决这个问题了。

解决后:

这里写图片描述

撒花❀❀❀ 撒花 ❀❀❀ 撒花❀❀❀ 撒花❀❀❀撒花❀❀❀ 撒花 ❀❀❀ 撒花❀❀❀ 撒花❀❀❀ ❀❀❀ 撒花❀❀❀ 撒花❀❀❀

Linux命令不能随便敲,网上的命令更不能轻易尝试。辛辛苦苦搭建的开发环境啊……%>_<%

最后写一下我的联系方式吧^_^ QQ:1052060838 有问题希望能够一起交流……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值