键盘布局是否会隐藏Android操作栏?

15
在我的Android应用程序中,当我在XOOM设备上点击Edittext时,键盘会弹出并隐藏Actionbar。我不想让它发生,如何解决?例如,Google联系人应用程序就没有这个问题。
编辑:我有几个edittexts需要用户填写。一开始,当用户点击底部的一个edittext时,键盘弹出并隐藏了用户正在输入的edittext,因此他无法看到自己正在输入的内容,我觉得这很糟糕,为了解决这个问题,我只需在清单中添加:android:windowSoftInputMode="stateVisible|adjustPan" 但是,之后屏幕会自动调整并隐藏操作栏。
Google联系人应用程序也会出现相同的情况,但神奇的是它不会隐藏操作栏,他们是如何做到的呢?

你尝试给这个EditText添加android:imeOptions="flagNoExtractUi"(或者使用EditText.setImeOptions(...))了吗? - Selvin
@Selvin 它没有解决问题。我刚刚更新了问题。 - Paulo Barros
我有同样的问题。我尝试添加“adjustResize”,但没有帮助。 - ddmytrenko
1个回答

32

使用adjustResize代替adjustPan。框架会尝试通过滚动任何父视图来保持焦点元素在屏幕上的可见性。

如果你的EditText字段没有嵌套在某种滚动容器中,例如ScrollView,则当键盘调整活动大小时,你的布局可能太长而无法完全显示。尝试使用ScrollView包装表单布局。这也将允许你的应用程序内容在运行在较小屏幕设备上时进行滚动,从而避免类似问题。


2
但是我不想调整它的大小。对我来说隐藏一些内容也没有问题。唯一需要在屏幕上显示的内容是所选的编辑文本和操作栏。就像谷歌联系人一样。他们是如何做到的? - Paulo Barros
他们通过使用adjustResize来实现。 :) 如果您的键盘遮挡了内容(在某些具有不同屏幕尺寸或更高键盘的设备上会出现此问题),那么您确实需要调整大小行为。这使您可以使用滚动容器来保持活动内容在键盘打开时可访问。 - adamp
5
谢谢。我需要同时使用adjustResize和scrollview。 - Paulo Barros
6
我也遇到了这个问题,不同之处在于我在我的edittext上方有一个列表,并且无法使用滚动容器。如果我使用adjustResize当edittext聚焦时它会出现在列表的上面,导致列表下面的最后几项被遮挡(列表没有被顶上去)。另一方面,如果我不使用adjustResize,当edittext聚焦时它会将所有内容向上推,但是ActionBar会被隐藏并且我也无法滚动到列表的顶部。有人可以分享解决方案吗? - Sandra
@Sandra,你是怎么解决你的问题的?我现在也遇到了同样的问题。 - 55597
我也在寻找解决相同问题的方法。已经花了几个小时尝试了所有可能,但仍然没有运气。 - zeeshan

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