在AutocompleteTextView中,如何实现滚动下拉菜单覆盖键盘?

18

我有一个 Autocompletetextview 下拉建议列表,一直延伸到软键盘的边缘。

然后,在滚动建议列表时: -(在姜饼手机上)下拉菜单自动增加高度,覆盖键盘,这很好,因为它显示了更多的选项。 -(在 ICS 模拟器中)下拉菜单不会增加高度覆盖键盘。

这是否与某些系统属性有关? 有没有办法在 ICS 中也强制第一种行为?


1
你找到了解决这个问题的答案吗?我目前也面临着同样的问题。谢谢。 - Andres
1
奇怪的行为,遇到了同样的问题。 - Penzzz
7个回答

27
只需在您的布局文件中的AutoCompleteTextView标签中添加android:dropDownHeight="100dp",它将起作用。

2
如果可以的话,我会给你一百万... 你让我的一天变得美好! - keybee
3
鉴于不同设备具有不同的宽高比,这是一种解决方法,100dp并不是一个神奇的数字,您需要将其调整到不同的设备和操作系统版本上。然而,这是我目前找到的唯一解决方法,因此我会点赞这个答案。谢谢! - shalafi
数日的搜索...数日的煎熬...只为了一个简单的修复。谢谢。 - Brandon
1
最直接和愚蠢的解决方案 - Vitaly
它确实能够运行,但这并不是一个可行的解决方案。 - undefined

2

让我解释一下我的小技巧,以避免“下拉”显示在键盘后面。这个技巧与dropDownAnchor属性有关。 解决方法是使用位于屏幕顶部的视图来设置锚点,因此菜单将从该位置离开,因此不会被键盘覆盖。例如:

android:dropDownAnchor="@+id/topview"

我知道这是一个丑陋的解决方案,但这个控件太有限了。


无法工作的解决方案。 - Vitaly

1

只需在您的片段或活动中添加getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);即可。


它可以在Android 11上运行,但无法在Android 12上运行。 - Vitaly

1

您也可以使用android:dropDownAnchor="@id/将下拉菜单固定到一个视图上。


1

一个适用于所有分辨率的简单解决方案是使用android:dropDownAnchor属性,并使用引用您活动工具栏的资源ID。

<my.app.ContactAutoCompleteTextView
                            android:id="@+id/autocomplete_textview"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:gravity="top"
                            android:dropDownAnchor="@id/appbar"
                            android:inputType="text|textMultiLine|textCapSentences|textAutoCorrect"
                            android:paddingBottom="12dp"
                            android:textColor="@color/text_primary"
                            android:textColorLink="@color/secondary"
                            android:textSize="@dimen/text_medium" />

0
你需要做两件事情。 首先,在清单文件中调整该活动的软输入模式。
android:windowSoftInputMode="stateHidden|adjustResize"

这样可以确保当键盘显示时,视图会再次布局。然后,在顶层视图的oncreate中设置全局布局监听器,以在布局更改时进行下拉高度计算。如果需要,可以将下拉高度调整为键盘以下所有内容的高度减去一些填充。

v.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
                autoCompleteView.setDropDownHeight(view2.getHeight());
}

其中view2是包含自动完成视图下方所有内容的视图/布局。


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

android:dropDownHeight="match_parent"

或者

android:dropDownHeight="500dp"

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

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