我使用以下代码进行自动完成,但是下拉项目位于AutoCompleteTextView
之上。我希望它显示在AutoCompleteTextView
下方。我怎样才能做到这一点?
package com.example.autocomplete;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, COUNTRIES);
AutoCompleteTextView textView = (AutoCompleteTextView)
findViewById(R.id.countries_list);
textView.setAdapter(adapter);
}
private static final String[] COUNTRIES = new String[] {
"Belgium","Belgam","Bellam", "France Belgium", "Italy", "Germany", "Spain"
};
}
的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<AutoCompleteTextView
android:id="@+id/countries_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp"
android:dropDownHeight="100dp"
android:ems="10"
android:text="AutoCompleteTextView" >
<requestFocus />
</AutoCompleteTextView>
</RelativeLayout>
答案 0 :(得分:8)
看起来这必须有效:
android:dropDownHeight="100dp"
在这里成立:https://stackoverflow.com/a/7648028/1723525
修改强>
我尝试了一个新的活动和下面显示的建议ara。也许你必须将dropDownHeight更改为150dp,因为你有marginTop为100dp。我猜dropDownHeight必须高于Y位置(=填充+边距)。如果有效,请告诉我。
答案 1 :(得分:6)
设置下拉列表的高度并在下拉列表和edittext之间设置空格。下拉列表将显示在dropdownanchor中的上方和下方视图中。高度= 200dp,下拉列表不会与键盘重叠。
<RelativeLayout
android:id="@+id/dropdownAutoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="8dp"
android:paddingTop="8dp">
<AutoCompleteTextView
android:id="@+id/autoTextViewState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:digits="@string/get_started_petname_digits"
android:dropDownAnchor="@+id/dropdownAutoCompleteTextView"
android:dropDownHeight="200dp"
android:hint="Colorado"
android:imeOptions="actionNext"
android:inputType="textEmailAddress|textCapWords"
android:maxLength="15"
android:nextFocusDown="@+id/editZipCode"/>
</RelativeLayout>
答案 2 :(得分:2)
使用布局中android:dropDownAnchor
上的android:dropDownHorizontalOffset
,android:dropDownVerticalOffset
,AutoCompleteTextView
和其他人。有关详细信息AutocompleteTextView。
答案 3 :(得分:0)
添加dropdownheight以及dropdownanchor,肯定会有效。
android:dropDownAnchor="@id/yourIdOfViewOnTop"
android:dropDownHeight="100dp"
答案 4 :(得分:0)
让我们了解如何呈现下拉视图。实际上,它是 PopupWindow ,它通过方法findDropDownPosition来确定位置(与View Archor相比在上方还是下方)。对这种方法的评论说:
将弹出窗口置于屏幕上。当弹出窗口太高时 为了适合锚点,将查找父滚动视图并向上滚动 回收空间。如果滚动不可能或不够,则弹出窗口 窗口在锚点上方移动。 定位结果放置在{@code outParams}中。
我已经搜索了数不清的日子,但是如果您想要处理下拉菜单的位置(我的情况在DialogFragment中),则没有任何解决方案真正起作用。 这是我在服务器工作几天后的经验,您可以(欺骗)代码来解决此问题:
android:dropDownAnchor
设置要显示的下拉菜单的锚点,它可以正常工作,但UI似乎太奇怪了setDropDownVerticalOffset(offset: Int)
可以,但是同样,UI太奇怪了android:dropDownHeight
设置为高于(上方或下方)空间的高度,结果将与上方的两种方式相同