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