ejemplo custom android autocompletetextview

android - custom - multiautocompletetextview



La lista de sugerencias AutocompleteTextView sube (6)

¡Solo con la adición de android:dropDownHeight="100dp" a la etiqueta AutoCompleteTextView en su archivo de diseño será la mejor solución! simplemente controla la altura de la barra desplegable y nos permite desplazarnos!

<AutoCompleteTextView android:id="@+id/acetxt_assignclient" android:layout_width="fill_parent" android:layout_height="wrap_content" android:dropDownHeight="250dp"> </AutoCompleteTextView>

posibles duplicados Android: autocompletetetextview, la lista de sugerencias se muestra sobre la vista de texto?

Estoy intentando mostrar completamente la superposición de la lista de sugerencias en el teclado cuando la lista de sugerencias se desplaza por usuario, pero siempre está abierta.

aqui estoy llegando de esta manera

aquí está mi archivo manifiesto

<?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>

Aquí está mi archivo main.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>

qué hacer en este código para mostrar la sugerencia sobre el teclado cuando la lista estaba en foco.


Aquí está mi solución

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; } });

Una vez que el teclado aparece, la lista de sugerencias aparece en la parte superior de la página, Autocompletar texto siguiente


El truco es asegurarse de que la altura desplegable deseada nunca sea mayor que el espacio disponible a continuación. Mi enfoque es crear una subclase que 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(); } }

Luego use esto en su diseño, por ejemplo:

<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" />

Ajuste MINIMAL_HEIGHT para que se adapte a sus necesidades: si no hay o hay muy poco espacio debajo, probablemente sea mejor no forzar el problema.


Establecer diseño completo que contenga Autocompletar vista de texto dentro de Scrollview

¡Esto resolverá tu problema!


He tenido este problema antes Para mí, había más espacio en la pantalla sobre AutocompleteTextView que debajo (prueba en un dispositivo "normal"), por lo que la lista se abrió hacia arriba. Ajusté mi diseño ligeramente para que hubiera más espacio debajo de AutocompleteTextView y comenzó a abrirse hacia abajo. Eso es lo que me lo arregló.


Puede ajustar el diseño para que haya más espacio debajo de AutoCompleteTextView

o

puede cambiar la altura desplegable de android:dropDownHeight y establecer un valor alto, esto funcionaría cuando está dentro de un scrollView y el AutoCompleteTextView está cerca de la parte superior.

Para mostrar la lista de opciones enfocadas, haga algo como esto.

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

Esto mostraría una lista de opciones cuando el usuario se concentre en AutoCompleteTextView