如何在软键盘弹出时防止窗口重新调整大小和重新布局

6
我在一个活动中显示一个编辑对话框,当软键盘出现时,活动窗口会被调整得太小,看起来很糟糕。我不想调整和布局活动窗口,只想让键盘覆盖在活动窗口上,并将对话框移到顶部,以便软键盘有空间显示。
我尝试在清单文件中使用“android:windowSoftInputMode="xxxxx"”,但没有一种模式适合我的情况。我也发现了类似的question,但它没有解决我的问题。
编辑:我已经尝试过setImeOptions和getWindown().setFlags,但仍然没有奏效,任何建议将不胜感激。
编辑2:我尝试在3.0中使用android:windowSoftInputMode="adjustNothing",它完美地工作了,但我该如何在2.3上实现这个?
2个回答

14

在AndroidManifest.xml文件中为您的Activity添加此属性:

android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="stateUnchanged|adjustPan"

在不确切了解android:configChanges语句的作用时添加它们并不是一个好主意。而且"orientation"部分既与问题无关,也不被鼓励。 - personne3000

1

我找到了一个避免这个问题的方法,但只是避免了,仍然想知道在Android 2.3中的解决方案。

以前,我将控件从顶部和底部在XML中布局,就像这样:

<ToolBar android:id="@+id/blabla"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" />

当键盘显示时,活动窗口会被调整大小,因此工具栏被推出,看起来不太好。

现在,我将控件从顶部布局,虽然窗口仍然被调整大小,但工具栏和其他控件不会被推出,它们只是在窗口外布局,当软键盘显示时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接