在autocompletetextview中滚动键盘上的下拉菜单

时间:2013-02-07 12:10:12

标签: android drop-down-menu autocompletetextview

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

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

这与某些系统属性有关吗? 有没有办法强制ICS中的第一个行为?

6 个答案:

答案 0 :(得分:26)

只需将android:dropDownHeight="100dp"添加到布局文件中的AutoCompleteTextView标记即可。

答案 1 :(得分:1)

让我解释一下我的小技巧,以避免键盘后面出现“下拉”。诀窍在于dropDownAnchor属性。 解决方案是使用位于屏幕顶部的视图设置锚点,因此菜单将从该位置离开,因此键盘不会覆盖。例如:

android:dropDownAnchor="@+id/topview"

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

答案 2 :(得分:1)

您还可以使用android:dropDownAnchor="@id/将下拉菜单锚定到视图。

答案 3 :(得分:0)

你需要做两件事。 首先,在清单中调整该活动的软输入模式。

android:windowSoftInputMode="stateHidden|adjustResize"

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

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

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

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

答案 4 :(得分:0)

只需将getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);添加到您的片段或活动

即可

答案 5 :(得分:0)

一种适用于所有分辨率的简单解决方案是将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" />