19

I am using following code for auto complete however, dropdown items comes above the AutoCompleteTextView. I want it to show up beneath the AutoCompleteTextView. How can I do that?

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>
CopsOnRoad
  • 237,138
  • 77
  • 654
  • 440
Figen Güngör
  • 12,169
  • 14
  • 66
  • 108

5 Answers5

13

Looks like this must work:

android:dropDownHeight="100dp"

Founded here: https://stackoverflow.com/a/7648028/1723525

Edit:

I tried with a new Activity and the suggestions ara shown below. Maybe you have to change the dropDownHeight to 150dp because you have marginTop of 100dp. I guess that the dropDownHeight must be higher than the Y position (= padding + margin). Let me know if it works.

Community
  • 1
  • 1
Francesco verheye
  • 1,574
  • 2
  • 14
  • 32
  • Maybe the point is that you have to make it small enough to display it in the space. Otherwise it just pick the bigger one. – Kimi Chiu May 01 '16 at 11:38
10

Set height of dropdown and set space between dropdown and edittext. Dropdown will display above and below view in dropdownanchor. Height = 200dp, dropdown will not overlap keyboard.

                <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>
Anh Duy
  • 1,145
  • 15
  • 25
9

Use the android:dropDownAnchor, android:dropDownHorizontalOffset, android:dropDownVerticalOffset and maybe others on the AutoCompleteTextView in your layout. For more info AutocompleteTextView.

CopsOnRoad
  • 237,138
  • 77
  • 654
  • 440
Dipen Dedania
  • 1,452
  • 1
  • 21
  • 37
4

Let's understand how dropdown view will be rendered. In the fact, it's PopupWindow and it decide position (above or below compare with view archor) by method findDropDownPosition. Comment of this method said that:

Positions the popup window on screen. When the popup window is too tall to fit under the anchor, a parent scroll view is seeked and scrolled up to reclaim space. If scrolling is not possible or not enough, the popup window gets moved on top of the anchor. The results of positioning are placed in {@code outParams}.

I've search serveral days but no any solutions really work in case you want handle dropdown's position (my case is in DialogFragment). This is my experience after serveral days, you can (cheat) code to fix this problem:

  • Use android:dropDownAnchor to set anchor of dropdown to show, it's worked but UI is seem be too strange
  • Use setDropDownVerticalOffset(offset: Int) again, it's worked but again, UI is too strange
  • Set android:dropDownHeight to higher than height of (above or below) space, result will be the same as 2 ways above
ChrisM
  • 505
  • 6
  • 18
3

Add dropdownheight as well as dropdownanchor, will work surely.

android:dropDownAnchor="@id/yourIdOfViewOnTop"
android:dropDownHeight="100dp"
Kuldeep Sakhiya
  • 3,172
  • 1
  • 18
  • 17