2010-07-18 4 views
6

Ho una finestra di dialogo che copre 1/3 dell'intera altezza dello schermo e viene visualizzata in cima alla mia attività. La finestra di dialogo contiene due campi AutoCompleteTextView.Elenco di selezione interrotto in AutoCompleteTextView in Dialog

Il problema che sto affrontando è che quando l'utente inizia a digitare qualcosa nella AutoCompleteTextView, la lista con tutti i suggerimenti mostra solo fino alla fine inferiore della finestra, ma non va oltre che anche l'elenco è più lungo . Sembra che sia tagliato fuori. (schermata a sinistra)

Solo dopo aver premuto a lungo un elemento dall'elenco dei suggerimenti, l'elenco verrà mostrato in tutta la sua lunghezza. (Screenshot a destra)

Screenhot e ': http://img704.imageshack.us/i/dialogdropdown.png/ screenshot http://img704.imageshack.us/img704/1893/dialogdropdown.png

Come risolvere questo comportamento in modo che l'elenco mostra in integrale fin dall'inizio, quando l'utente inizia a digitare qualcosa?

Codice-saggio non c'è niente di speciale, non faccio altro che:

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 soluzione idea è quella di spedire in qualche modo un evento di movimento per simulare un tocco (ma poi non selezionando però) una delle voci di elenco . Qualche idea concreta in codice per una soluzione, nessuno?

risposta

1

In questo momento sto supponendo che è un bug, che ho già presentato qui: http://code.google.com/p/android/issues/detail?id=9917

Ma se qualcuno sa di una soluzione a questo, sarei molto grato e sarà felice di scambiare per qualche bounty punti.

Edit:

Una soluzione che mi è venuta in mente è ora di estendere la finestra di dialogo per la stessa parte inferiore dello schermo, ma lasciare lo sfondo trasparente, in modo che appaia la stessa di oggi, ma in realtà ha un'altezza che non taglierebbe la lista. Lo proverò ...

0

Solo uno scatto al buio, ma hai provato a impostare android:clipChildren su false sulla finestra di dialogo in cima alla tua attività?

+0

Ho provato a impostare tale attributo per il LinearLayout molto esterno del mio layout di finestra di dialogo e anche per tutti gli altri di cui AutoCompleteTextView è un (secondario) figlio di. Ma non aiuta. Dato che si tratta di una finestra di dialogo, dovrebbe essere più simile a window.setClipChildren (false), ma sfortunatamente tale metodo non esiste per la finestra. O alcuni flag come window.setFlags (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); ma tutto ciò non aiuta. –

0

Ho raggiunto con successo questo, ma non è bello.

ho finito il mio metodo override SimpleCursorAdapter.newView(), salendo la gerarchia ViewParent fino a raggiungere la radice View, e quindi modificandone la WindowManager.LayoutParams come OR nella bandiera FLAG_LAYOUT_NO_LIMITS.

Questo deve essere ripetuto ogni volta che viene visualizzato il menu a discesa.

1

Non molto tempo fa ho affrontato questo problema. Ho avuto una piccola finestra di dialogo con AutoCompleteTextView, che aveva più di 10 elementi nell'elenco a discesa. Questa lista è stata tagliata. La mia soluzione era:
Luogo qualche vuoto View nel mio file di layout di dialogo con i parametri

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

ha fatto la mia piccola finestra come una finestra a schermo intero, ma actualy che "coda" non è stato dimostrato, e la mia discesa wasn è stato tagliato, perché ha avuto abbastanza spazio per mostrare gli elementi della lista da DropDown.

0

come si vede qui: Scrolling drop-down-menu over the keyboard in autocompletetextview

È possibile utilizzare la proprietà Android: dropDownHeight del AutoCompleteTextView per costringerlo a essere di una certa altezza. Questo non risolve il problema, ma è il meglio che ho potuto trovare.

Nota: Questo problema si verifica solo quando si utilizza AutoCompleteTextView all'interno di una finestra di dialogo. Quando viene utilizzato sul layout di un'attività o di un frammento funziona correttamente.

Questo problema è presente da Gingerbread a Jelly Bean.

Problemi correlati