我有一个 Autocompletetextview 下拉建议列表,一直延伸到软键盘的边缘。
然后,在滚动建议列表时: -(在姜饼手机上)下拉菜单自动增加高度,覆盖键盘,这很好,因为它显示了更多的选项。 -(在 ICS 模拟器中)下拉菜单不会增加高度覆盖键盘。
这是否与某些系统属性有关? 有没有办法在 ICS 中也强制第一种行为?
我有一个 Autocompletetextview 下拉建议列表,一直延伸到软键盘的边缘。
然后,在滚动建议列表时: -(在姜饼手机上)下拉菜单自动增加高度,覆盖键盘,这很好,因为它显示了更多的选项。 -(在 ICS 模拟器中)下拉菜单不会增加高度覆盖键盘。
这是否与某些系统属性有关? 有没有办法在 ICS 中也强制第一种行为?
AutoCompleteTextView
标签中添加android:dropDownHeight="100dp"
,它将起作用。让我解释一下我的小技巧,以避免“下拉”显示在键盘后面。这个技巧与dropDownAnchor属性有关。 解决方法是使用位于屏幕顶部的视图来设置锚点,因此菜单将从该位置离开,因此不会被键盘覆盖。例如:
android:dropDownAnchor="@+id/topview"
我知道这是一个丑陋的解决方案,但这个控件太有限了。
只需在您的片段或活动中添加getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
即可。
您也可以使用android:dropDownAnchor="@id/
将下拉菜单固定到一个视图上。
一个适用于所有分辨率的简单解决方案是使用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" />
android:windowSoftInputMode="stateHidden|adjustResize"
这样可以确保当键盘显示时,视图会再次布局。然后,在顶层视图的oncreate中设置全局布局监听器,以在布局更改时进行下拉高度计算。如果需要,可以将下拉高度调整为键盘以下所有内容的高度减去一些填充。
v.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
autoCompleteView.setDropDownHeight(view2.getHeight());
}
其中view2是包含自动完成视图下方所有内容的视图/布局。
或者android:dropDownHeight="match_parent"
如果我们没有提及下拉菜单的高度,它将被视为wrap_content。因此,该项将显示在软键盘后面。android:dropDownHeight="500dp"