windowSoftInputMode属性解析


我相信做过android开发的童鞋们应该都了解过这个属性的吧。这是Google官方关于windowSoftInputMode的介绍,应该算比较详细的了。

http://developer.android.com/guide/topics/manifest/activity-element.html

如果英语不好的童鞋,可以参考下面的教程,也能够很轻松的理解。

android:windowSoftInputMode属性详解

windowSoftInputMode可选值有以下这些:

android:windowSoftInputMode=["stateUnspecified",
                             "stateUnchanged", 
                             "stateHidden",
                             "stateAlwaysHidden", 
                             "stateVisible",
                             "stateAlwaysVisible", 
                             "adjustUnspecified",
                             "adjustResize", 
                             "adjustPan"]   

一般来说,在给它设置值的时候都是一个stateXXX + 一个adjustXXX,值之间用|分割开,比如

android:windowSoftInputMode="stateHidden|adjustResize"

在<Activity />中设置的值将覆盖在主题中设置的值。

各个值的含义如下:(PS:简书中没搞明白markdown表格的使用,所以只能手动排格式了)

"stateUnspecified"

The state of the soft keyboard (whether it is hidden or visible) is not specified. The system will choose an appropriate state or rely on the setting in the theme.
This is the default setting for the behavior of the soft keyboard.
未指定软键盘的状态,系统将自动选择一个合适的状态或依赖于主题中的设置,这是默认的设置

"stateUnchanged"

The soft keyboard is kept in whatever state it was last in, whether visible or hidden, when the activity comes to the fore.
当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

"stateHidden"

The soft keyboard is hidden when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity.
用户选择activity时,软键盘总是被隐藏

"stateAlwaysHidden"

The soft keyboard is always hidden when the activity's main window has input focus.
当该Activity主窗口获取焦点时,软键盘也总是隐藏的

"stateVisible"

The soft keyboard is visible when that's normally appropriate (when the user is navigating forward to the activity's main window).
软键盘通常是可见的

"stateAlwaysVisible"

The soft keyboard is made visible when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity.
用户选择activity时,软键盘总是显示的状态

"adjustUnspecified"

It is unspecified whether the activity's main window resizes to make room for the soft keyboard, or whether the contents of the window pan to make the current focus visible on-screen. The system will automatically select one of these modes depending on whether the content of the window has any layout views that can scroll their contents. If there is such a view, the window will be resized, on the assumption that scrolling can make all of the window's contents visible within a smaller area.
This is the default setting for the behavior of the main window.
默认设置,通常由系统自行决定是隐藏还是显示

"adjustResize"

The activity's main window is always resized to make room for the soft keyboard on screen.
该Activity总是调整屏幕的大小以便留出软键盘的空间

"adjustPan"

The activity's main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window.
当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

一般来说,用的比较多的还是"stateHidden|adjustResize"和"stateHidden|adjustPan"这两对组合。
"adjustResize"在使用时布局会被软键盘顶上去,体验非常不好
"adjustPan"在使用时获取焦点的控件下边的View将会被软键盘覆盖

之前在做公司的IM的时候,聊天界面仿的微信,但是体验一直没有微信那么好,微信和米聊这些IM软件在点击输入框弹出输入法的时候,界面非常平稳,不会出现界面闪动的情况,后来经过多次尝试后,基本可以实现微信的效果,给Activity设置windowSoftInputMode的时候一定要选择"adjustPan",不能选择"adjustResize",结合之前的博文Android上如何获取软键盘高度,可以确定软键盘的高度,从而确定EditText控件下面面板的高度,后面有时间我会专门写一下如何实现这种效果的博文。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容