欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

记一次页面有EditText时,键盘弹出的问题,页面edittext

来源: 开发者 投稿于  被查看 46758 次 评论:222

记一次页面有EditText时,键盘弹出的问题,页面edittext


先来看一下在 Manifest 文件里面的 Activity 里面的这个属性

android:windowSoftInputMode="adjustPan|stateHidden"

以下介绍部分属于来自官方文档

这个属性是 Android 1.5之后推出的,主要是为了 Activity 与软键盘的交互,主要的作用有两个:

  • 当 Activity 成为用户注意的焦点时软键盘的状态 — 隐藏还是可见。
  • 对 Activity 主窗口所做的调整 — 是否将其尺寸调小以为软键盘腾出空间,或者当窗口部分被软键盘遮挡时是否平移其内容以使当前焦点可见。

该设置必须是下表所列的值之一,或者是一个“state…”值加上一个“adjust…”值的组合。 在任一组中设置多个值(例如,多个“state…”值)都会产生未定义结果。各值之间使用垂直条 (|) 分隔。

这里的意思就是,正常会有下面的几种组合形式

而不能写成

  • adjust…
  • state…

比如

<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >

属性介绍:

我遇到的问题

我在首页点击按钮进入下个页面,进去之后自动弹出软键盘,返回页主页面有两种方式

方式一

按返回键,先收起软键盘,再按一次,返回主页面,这种情况是没有问题的

方式二

直接点击导航栏的返回按钮,返回主页面,这种情况确实返回了主页面,但是软键盘却没有自动收起。我主页面的 Activity 是设置的

android:windowSoftInputMode="adjustPan|stateHidden"

设置成这两个属性是因为主页面有个输入框,如果不设置的话,输入框弹起的时候,会把底部的 tab 栏顶上来。

从上面的属性说明来看,adjustPan 是正常的,可以很好的解决我键盘弹出时,把底部 tab 栏顶上来的 bug,

那么问题主要就出在 stateHiden 这里,由于我这个是主页面,首次进来的时候软键盘是被隐藏的,如果我从主页面进入 ActivityA ,在ActivityA 里面有输入框,我直接点击左上角的返回按钮回到主页面,软键盘并不会被隐藏,还是出现在页面中,

最终解决办法:

由于这个是主页面,我们想要每次进来的时候,软键盘都是被隐藏的,只需要把 stateHidden 换成 stateAlwaysHidden 或者直接删掉就好了。

你可以通过以下方式关注我:
1. CSDN
2. 掘金
3. 个人博客
4. Github

查看评论
相关频道:

用户评论