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