2010-07-18 13 views
6

Tengo una ventana de diálogo que cubre 1/3 de la altura de la pantalla completa y se muestra en la parte superior de mi actividad. El diálogo contiene dos campos AutoCompleteTextView.Lista de selección cortada en AutoCompleteTextView en el Diálogo

El problema al que me enfrento es que cuando el usuario comienza a escribir algo en AutoCompleteTextView, la lista con todas las sugerencias solo aparece hasta el final del diálogo, pero no va más allá de eso, incluso la lista es más larga . Parece que está cortado. (captura de pantalla izquierda)

Solo después de presionar durante mucho tiempo un elemento de la lista de sugerencias, la lista se mostrará en toda su longitud. (Imagen a la derecha)

Screenhot está en: http://img704.imageshack.us/i/dialogdropdown.png/ screenshot http://img704.imageshack.us/img704/1893/dialogdropdown.png

Cómo corregir este comportamiento para que la lista muestra en toda su longitud desde el principio, cuando el usuario comienza a escribir algo?

Código en cuanto no hay nada especial, todo lo que hago es:

idea
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getContext(), R.layout.nav_route_autocomplete_row, locStrings);   
AutoCompleteTextView txtStartPos = (AutoCompleteTextView) findViewById(R.id.txtStartPos); 
txtStartPos.setAdapter(adapter); 
... 

Una solución consiste en despachar alguna manera un evento de movimiento para simular un toque (pero, de no seleccionar embargo) uno de los elementos de la lista . Cualquier idea concreta en el código para una solución, ¿alguien?

Respuesta

1

En este momento estoy asumiendo que es un error, que ya presenté aquí: http://code.google.com/p/android/issues/detail?id=9917

Pero si alguien sabe una solución para esto, te agradecería enormemente y se alegraría de cambiarlo por alguna recompensa puntos.

Editar:

Una solución que viene a la mente es ahora extender el diálogo a la parte inferior de la pantalla pero dejar el fondo transparente, por lo que parece el mismo que ahora, pero en realidad tiene una altura que no cortaría la lista. Voy a intentarlo ...

0

Solo un tiro en la oscuridad, pero ¿ha intentado establecer android:clipChildren en false en la vista para el diálogo encima de su actividad?

+0

Intenté establecer ese atributo para el LinearLayout muy externo de mi diseño de diálogo, y también para todos los demás de los que AutoCompleteTextView es un (secundario) hijo. Pero no ayuda. Como es un cuadro de diálogo, debería ser más como window.setClipChildren (falso), pero desafortunadamente este método no existe para la ventana. O algunos indicadores como window.setFlags (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); pero eso no ayuda. –

0

Lo he logrado con éxito, pero no es bonito.

que terminó anulando mi método SimpleCursorAdapter.newView(), subir la jerarquía ViewParent hasta llegar a la raíz View, y luego modificar su WindowManager.LayoutParams por la operación lógica OR en la bandera FLAG_LAYOUT_NO_LIMITS.

Esto debe volver a realizarse cada vez que se muestre el menú desplegable.

1

No hace mucho tiempo me enfrenté a este problema. Tenía un diálogo pequeño con AutoCompleteTextView, que tenía más de 10 elementos en la lista desplegable. Esta lista fue cortada. Mi solución fue:
Place algunas vacías View en mi archivo de diseño de diálogo con los parámetros

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
<!-- 
Some Views placed here 
--> 
     <View 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="invisible" /> 

</LinearLayout> 

que hizo que mi pequeña de diálogo como un diálogo de pantalla completa, pero podía comprender que la "cola" no se mostró, y mi desplegable wasn cortado en absoluto, porque tenía lugar suficiente para mostrar los artículos de la lista de DropDown.

0

como se ve aquí: Scrolling drop-down-menu over the keyboard in autocompletetextview

Puede utilizar la propiedad androide: dropDownHeight del AutoCompleteTextView para forzarlo a ser de una cierta altura. Esto realmente no está resolviendo el problema, pero es lo mejor que pude encontrar.

Nota: Este problema solo ocurre cuando se utiliza AutoCompleteTextView dentro de un Dialog. Cuando se usa en el diseño de una actividad o un fragmento, funciona bien.

Este problema está presente desde Gingerbread hasta Jelly Bean.

Cuestiones relacionadas