bug:
全屏状态下 adjustResize 不响应 只能用adjustpan,且webview 全屏状态下 adjustpan响应也不够好 有时无响应。
http://code.google.com/p/android/issues/detail?id=5497
在AndroidManifest.xml文件中的android:windowSoftInputMode属性使用
The AndroidManifest.xml File
<activity android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible", "adjustUnspecified",
"adjustResize", "adjustPan"] …… >
</activity>
attributes:
android:windowSoftInputMode
活动的主窗口如何与包含屏幕上的软键盘窗口交互。这个属性的设置将会影响两件事情:
1> 软键盘的状态——是否它是隐藏或显示——当活动(Activity)成为用户关注的焦点。
2> 活动的主窗口调整——是否减少活动主窗口大小以便腾出空间放软键盘或是否当活动窗口的部分被软键盘覆盖时它的内容的当前焦点是可见的。
它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。在任一组设置多个值——多个”state…”values,例如&mdash有未定义的结果。各个值之间用|分开。例如: <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的值
值 描述
"stateUnspecified" 软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是为了软件盘行为默认的设置。
"stateUnchanged" 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。
"stateHidden" 当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
"stateAlwaysHidden" 软键盘总是被隐藏的,当该Activity主窗口获取焦点时。
"stateVisible" 软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。
"stateAlwaysVisible" 当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
"adjustUnspecified" 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。
"adjustResize" 该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间。
"adjustPan" 该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
bug:
全屏状态下 adjustResize 不响应 只能用adjustpan,且webview 全屏状态下 adjustpan响应也不够好 有时无响应。
http://code.google.com/p/android/issues/detail?id=5497
Issue 5497: | adjustResize windowSoftInputMode breaks when activity is fullscreen | |
30 people starred this issue and may be notified of changes. | Back to list |
I am on Android 1.5 r3. I have a very simple activity with a vertical linear layout that contains an edit text, and a text view with a green background that occupies all extra available space (layout weight = 1). When I focus on the edit text field, the keyboard appears and the screen should get adjusted so that the green text view shrinks vertically (resizes) and the text is still centered vertically within the visible green space. This works great, except when I make the activity fullscreen - either by setting the activity's theme to Theme.NoTitleBar.Fullscreen or by programatically setting the FLAG_FULLSCREEN window flag. If I use Theme.NoTitleBar things are fine. Also, I should mention that our device's screen is landscape (800x480) so I have implemented a keyboard whose InputMethodService subclass overrides onEvaluateFullscreenMode, always returning 'false' in order to stay in 'adjust resize keyboard mode' instead of going into 'fullscreen keyboard mode'.
Comment 1 by [email protected],
Jan 31, 2010
Jan 31, 2010
,
Just to add a bit of detail to my previous comment: I see the failure on Android 1.6 on my G1 phone.
Jan 31, 2010
,
Also tested on Android 2.1 in emulator - still fails there
Mar 1, 2010
,
Does someone have a workaround? I suppose I could use a fixed height for my layout and tweak it when the keyboard displays, assuming I can compute the size of the remaining screen area.
Mar 7, 2010
,
Reproducible on the Nexus One with 2.1-update1
Apr 24, 2010
,
I would like to voice my opinion that a notification when the keyboard goes away would be very helpful. I too am using a Fullscreen view, so I am stuck without an option to know when the keyboard disappears. I _am_ using a fixed height for the keyboard because the current mechanisms don't seem to work for fullscreen. But when the user presses the back button, the IME eats it and there's no notification or onSizeChanged to know when the keyboard goes away. Why is it so hard to provide a notification when the keyboard goes away?
Aug 5, 2010
,
Hello i have a relativeLayout at the top, then below i have a listView in the center and finaly at the bottom i have other relativeLayout with an editText and a button inside. I want to the listview resize when click the editText and the IME(virtual keyboard) appear. If i put adjustResize in the manifest, the listview is resized to leave space for the IME, but the relativeLayout with the editText that is below is cover by the IME and i can't see what i am writing. If i put adjustPan, the keyboard push up all, the listview is not resized and i loose the top relativeLayout. D: PLEASE HELP!!!!
Sep 9, 2010
,
i am facing the same issue what others are facing...if any one solve please let me know.
Oct 12, 2010
,
I'm running into this same issue with an activity that has an embedded WebView. The input field keyboard focus doesn't work right without adjustResize turned on, but adjustResize doesn't work in full screen mode. This means that this is the only activity in my app that shows the status bar. At the very least there should be something in the documentation that says that this combination doesn't (or isn't supposed to) work.
Oct 13, 2010
,
Relevant post from hackbod: https://groups.google.com/group/android-developers/msg/5690ac3a9819a53b
Feb 1, 2011
,
Please patch the OS so that adjustPan is honored in a fullscreen webview : When a keyboard slides up in a fullscreen webview, the input field clicked on should slide up (remaining visible). Otherwise, web designers cannot place input fields on the bottom 2/3rds of a screen.
Feb 23, 2011
,
I can confirm this issue. As soon as you set your activity to fullscreen the windowSoftInputMode:adjustResize will no longer work. I hope this will get fixed soon as this break alot of layout ideas.
Mar 16, 2011
,
Still an issue. 2.2.1
Sep 9, 2011
,
The same issue occurs in Android 3.1. The notification is also NOT SENT when the device is in LANDSCAPE mode in versions prior to 3.0. (actually i tested it in a Xoom with 3.1 and the notification is sent in LANDSCAPE mode, so i'm just assuming it was fixed in 3.0). The fullscreen problem also occurs in xoom, even if there's no screen diference between full screen and non-full screen in the Xoom.
Oct 7, 2011
,
The last two comments have confirmed Froyo and Honeycomb. I'll confirm Gingerbread also (2.3.4) Also, I interpret the linked post in comment 10 from Diane Hackborn as acknowledgement that this is an unintended effect and should not be the case. Would be nice if this was fixed, because adjustPan does bad things to layouts with headers or footers (pushing them offscreen). In an application which allows the user to select whether to hide the status bar or not, the time when the most space is available is the time when header and footer elements will become unaccessible. It doesn't make sense to behave this way. |