La liste de suggestions d'AutocompleteTextView s'allonge

possibilité de doublons Android: autocompletetetextview, liste de suggestions affiche au-dessus de textview?

j'essaie complètement d'afficher la liste de suggestions qui se chevauchent sur le clavier lorsque la liste de suggestions défile par utilisateur, mais elle s'ouvre toujours sur le côté.

ici je suis arriver de cette façon

enter image description here

voici mon fichier manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sl"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".SuggestionListActivity" 
            android:windowSoftInputMode="adjustResize|adjustPan|stateHidden">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

voici mon main.fichier xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" android:padding="10dp">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" 
        android:layout_margin="10dp"/>

    <TextView android:layout_margin="10dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is testing for the auto complete textview in this application to display suggestion list overlapping on keyboard." />

    <AutoCompleteTextView android:id="@+id/autocomplete"
            android:layout_width="fill_parent" android:layout_margin="5dp"
            android:layout_height="wrap_content" android:hint="Search"
            android:layout_marginLeft="5dp" android:dropDownHeight="300dp"
            android:inputType="textAutoComplete" android:singleLine="true"
            />

</LinearLayout>

que faire dans ce code pour afficher la suggestion sur le clavier lorsque la liste était mise au point.

18
demandé sur Community 2012-07-19 09:59:36

6 réponses

j'ai déjà eu ce problème. Pour moi, il y avait plus d'espace d'écran au-dessus du AutocompleteTextView que ci-dessous (test sur un dispositif "normal"), donc la liste s'est ouverte vers le haut. J'ai légèrement ajusté ma disposition pour qu'il y ait plus d'espace sous le AutocompleteTextView et il a commencé à s'ouvrir vers le bas. C'est ce qu'il fixe pour moi.

9
répondu Mike T 2012-08-13 10:55:34

vous pouvez soit ajuster la disposition de sorte qu'il y ait plus d'espace sous le AutoCompleteTextView

ou

vous pouvez changer la hauteur de chute android:dropDownHeight et certains de grande valeur, cela fonctionnerait quand il est à l'intérieur d'un scrollView et AutoCompleteTextView est proche du sommet.

pour afficher la liste des options sur focus faites quelque chose comme ceci

autoCompleteTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus) {
            autoCompleteTextView.showDropDown();
        }
    }
});

cela affichera une liste d'options lorsque l'utilisateur se concentre sur le AutoCompleteTextView

6
répondu Gautam 2013-01-15 08:47:48

le truc est de s'assurer que la hauteur de chute désirée n'est jamais plus grande que l'espace disponible ci-dessous. Mon approche est de créer une sous-classe qui remplace showDropDown:

public class DownOnlyAutoCompleteTextView extends AppCompatAutoCompleteTextView {

    private final static int MINIMAL_HEIGHT = 50;

    public DownOnlyAutoCompleteTextView(Context context) {
        super(context);
    }

    public DownOnlyAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DownOnlyAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void showDropDown() {
        Rect displayFrame = new Rect();
        getWindowVisibleDisplayFrame(displayFrame);

        int[] locationOnScreen = new int[2];
        getLocationOnScreen(locationOnScreen);

        int bottom = locationOnScreen[1] + getHeight();
        int availableHeightBelow = displayFrame.bottom - bottom;
        if (availableHeightBelow >= MINIMAL_HEIGHT) {
            setDropDownHeight(availableHeightBelow);
        }

        super.showDropDown();
    }
}

puis utilisez ceci dans votre mise en page, par exemple:

<your.package.DownOnlyAutoCompleteTextView
    android:id="@+id/auto_complete_text_view"
    android:layout_margin="12dp"
    android:hint="AutoComplete"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:ignore="HardcodedText" />

Ajuster MINIMAL_HEIGHT pour répondre à vos besoins -- s'il n'y a pas ou très peu d'espace ci-dessous, il est probablement préférable de ne pas forcer le problème.

2
répondu Petter Hesselberg 2018-01-16 08:43:21

il suffit d'ajouter le android:dropDownHeight="100dp"AutoCompleteTextView balise dans votre fichier de mise en page sera la meilleure solution je pense! il va tout simplement contrôler la hauteur de chute en bas de la hauteur et nous permettre de faire défiler!

<AutoCompleteTextView
        android:id="@+id/acetxt_assignclient"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"   
        android:dropDownHeight="250dp">
</AutoCompleteTextView>
0
répondu LOG_TAG 2013-11-19 11:42:25

Voici ma solution

private final static int DELAY_MS = 500;
autoCompletionTextView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            autoCompletionTextView.requestFocus();
            new Handler().postDelayed(() -> autoCompletionTextView.showDropDown(), DELAY_MS);
            return false;
        }
    });

après que le clavier se montre la liste de suggestions est énumérée au-dessus de yout Autocomplettextview.

0
répondu bshears 2017-05-22 06:46:21

mise en page complète contenant Autocompletetextview inside Scrollview

ceci va résoudre votre problème!

-2
répondu arpan 2013-02-20 06:14:14