Android AutocompleteTextView提示结果被键盘遮挡。

34

我有3个autocompletetextview,我将它们的适配器设置为一个非常简单的textview布局的ArrayAdapter<String>

autocompletextview提示结果正在显示,但在屏幕键盘下面(我只能看到一部分)。我该如何使结果显示在autocompletetextview上方而不是下方?

    airline = (AutoCompleteTextView)findViewById(R.id.airline);
    airline.setAdapter(new ArrayAdapter<String>(this, R.layout.autcomplete_dropdown, AIRLINES_AUTOCOMPLETE_ARRAY));

    departLocation = (AutoCompleteTextView)findViewById(R.id.departLocation);
    departLocation.setAdapter(new ArrayAdapter<String>(this, R.layout.autcomplete_dropdown, LOCATIONS_AUTOCOMPLETE_ARRAY));

    arriveLocation = (AutoCompleteTextView)findViewById(R.id.arriveLocation);
    arriveLocation.setAdapter(new ArrayAdapter<String>(this, R.layout.autcomplete_dropdown, LOCATIONS_AUTOCOMPLETE_ARRAY));
10个回答

9

简单地限制下拉列表的高度。

android:dropDownHeight="200dp"

这样结果就不会被软键盘遮挡了。

或者你也可以这样做:

理论上说,android:windowSoftInputMode="adjustPan|adjustResize"应该可以实现此功能,但由于某种原因,它没有生效,所以您需要在程序中同样设置:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);


5
使用ScrollView作为您的自动完成所在布局,就可以了!

3

1
是的,我在清单文件中已经设置了,但是自动完成下拉菜单的最后几个建议被软键盘遮挡了。 - Someone Somewhere

1

你应该看这里:创建输入法

在提交之前组合文本

如果您的输入法需要文本预测或需要多个步骤来组合字形或单词,您可以在用户提交单词之前在文本字段中显示进度,然后用完成的文本替换部分组合。当传递给InputConnection#setComposingText()时,您可以通过向文本添加"span"来对其进行特殊处理。

这样,建议将显示在软键盘预测中,例如自动更正。另一种方法是使用全屏IME... 使用ExtractEditText:请参阅此链接...

这通常是我在其他应用程序中看到的方式... 我不认为自动完成文本视图可以被反转并显示在视图的顶部,但奇怪的是它通常显示在键盘的上方而不是下方...


1

我之前也遇到过同样的问题。你可以尝试通过操纵被隐藏元素的 z-index 属性来强制它置于顶部,这在你的情况下应该是视图。希望对你有用!


隐藏的元素是唯一的下拉列表,有没有办法设置该列表的属性? - CopsOnRoad

1

另一个快速的解决方案是使用属性 "android:dropDownAnchor" 将下拉菜单固定在屏幕顶部的某个其他视图上。


0

使用

 android:windowSoftInputMode="adjustPan|adjustResize"

0
在你的AndroidManifest.xml文件中添加一个属性:
android:windowSoftInputMode="adjustPan|adjustResize"
这将自动调整和调整软键盘大小。

0
如果以上解决方案都没有起作用,请尝试以下方法:

android:dropDownHeight="match_parent"

如果我们没有指定下拉菜单的高度,它就会被视为wrap_content。因此该项目将显示在软键盘后面。

-2

在各自的布局中使用自动完成文本视图,然后您会看到它们仅在其中打开其值(上面),根据您的问题设置每个布局的自动完成文本视图(底部),您需要三个子布局。

它确实有效。


请问您能否更新您的回答,修复错误的英语?因为我不太明白您想表达什么。 - Adam Burley

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