21

I've been stumped on this for a few days. I have an autoCompleteTextView and a button split 50/50 in my layout. The autocomplete works, but the suggestions only take up half of the screen (equivalent to the size that my textView takes up). How could I change this to take up the whole width?

Pardon my terrible paint skills:

Blue = AutoCompleteTextView Red = desired autocomplete suggestions

This seems like a trivial problem, but simply changing the width to fill_parent doesn't work. Any ideas xml or programatically?

SOLUTION: myAutoCompleteTextView.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT)

enter image description here

EDIT: My first question seems to be solved, but now if I switch my button and my autoCompleteTextView I get another weird problem. The width starts at where the textView starts. Leaving me with an undesireable result.

SOLUTION: See edit 1 from user: vikram

enter image description here

4

4 回答 4

38

You can set this attribute in the description of this widget using the attribute:

android:dropDownWidth="match_parent"

If you would like to do this in java 'programmatically', use the method setDropDownWidth(int):

myAutoCompleteTextView.setDropDownWidth(int)

Edit 1:

Point pointSize = new Point();

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

myAutoCompleteTextView.setDropDownWidth(pointSize.x);
于 2013-07-22T17:04:59.910 回答
10

I find setDropDownAnchor() to be much more convenient.

Just pass the id of some view and drop down view will match its width and position (no matter where the actual text view is placed).

In your example that could be the parent of both: button and text view.

于 2015-10-13T00:07:25.317 回答
2

In my case AutoCompleteTextView occupied a whole width. Looking at change position of spinner dropdown list I set

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

to create left and right margins of a list.

enter image description here

于 2020-06-01T20:23:27.543 回答
0

You can also adjust where the width start with:

myAutoCompleteTextView.setDropDownHorizontalOffset(int offset)
于 2015-05-05T10:44:10.493 回答