在Android中更改AutoCompleteTextView的宽度

时间:2013-07-22 16:55:58

标签: java android xml android-listview autocompletetextview

我被困在这几天了。我的布局中有一个autoCompleteTextView和一个50/50的按钮。自动完成功能正常,但建议只占屏幕的一半(相当于我的textView占用的大小)。我怎么能改变它来占据整个宽度?

请原谅我可怕的绘画技巧:

蓝色= AutoCompleteTextView 红色=所需的自动填充建议

这似乎是一个微不足道的问题,但只是将宽度更改为fill_parent不起作用。任何想法xml或编程?

解决方案: myAutoCompleteTextView.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT)

enter image description here

修改 我的第一个问题似乎已经解决,但现在如果我切换我的按钮和我的autoCompleteTextView,我会得到另一个奇怪的问题。宽度从textView开始的位置开始。给我留下了不可取的结果。

解决方案:请参阅用户编辑1:vikram

enter image description here

4 个答案:

答案 0 :(得分:31)

您可以使用以下属性在此窗口小部件的说明中设置此属性:

android:dropDownWidth="match_parent"

如果您想在java'以编程方式'中执行此操作,请使用方法setDropDownWidth(int)

myAutoCompleteTextView.setDropDownWidth(int)

修改1:

Point pointSize = new Point();

getWindowManager().getDefaultDisplay().getSize(pointSize);

myAutoCompleteTextView.setDropDownWidth(pointSize.x);

答案 1 :(得分:8)

我发现setDropDownAnchor()更方便。

只需传递某个视图的ID,下拉视图就会匹配其宽度和位置(无论放置实际文本视图的位置)。

在您的示例中,可以是两者的父级:按钮和文本视图。

答案 2 :(得分:1)

在我的情况下,AutoCompleteTextView占据了整个宽度。看着我设置的change position of spinner dropdown list

android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"

创建列表的左右边距。

enter image description here

答案 3 :(得分:0)

您还可以调整宽度的起始位置:

myAutoCompleteTextView.setDropDownHorizontalOffset(int offset)