2013-02-07 10 views
14

Ho una vista di completamento automatico che scende nell'elenco dei suggerimenti, fino al bordo della tastiera virtuale.Scorrimento del menu a discesa sulla tastiera nella vista del prospetto automatico

Quindi, quando si scorre l'elenco dei suggerimenti: - (in un telefono di pan di zenzero) il menu a discesa aumenta automaticamente l'altezza che copre la tastiera, il che è utile poiché mostra più elementi. - (in un emulatore ICS) il menu a discesa non aumenta l'altezza sulla tastiera.

È correlato ad alcune proprietà di sistema? C'è un modo per forzare il primo comportamento anche in ICS?

+0

hai trovato una risposta a questo particolare problema? Attualmente sto affrontando lo stesso problema. Grazie. – Andres

+0

Strano comportamento, affrontato lo stesso problema. – Penzzz

risposta

26

Basta aggiungere android: dropDownHeight = "100dp" al tag AutoCompleteTextView nel file di layout, funzionerà.

+2

Ti darei + milioni se potessi ... Hai fatto la mia giornata! – keybee

+2

Questa è una soluzione, dato che diversi dispositivi hanno proporzioni diverse, il 100dp non è un numero magico, è necessario modificarlo su diversi dispositivi e versi OS. Tuttavia, questo è l'unico modo per risolverlo che ho trovato finora, quindi sto inviando questa risposta. Grazie! – shalafi

+0

Giorni di ricerca ... Giorni di agonia .. con una soluzione così semplice. Grazie – Brandon

2

Lasciatemi spiegare il mio piccolo trucco per evitare che il "menu a discesa" venga visualizzato dietro la tastiera. Il trucco è con la proprietà dropDownAnchor. La soluzione viene impostata con una vista situata nella parte superiore dello schermo, quindi il menu partirà da quella posizione e, pertanto, non sarà coperto dalla tastiera. Per esempio:

android:dropDownAnchor="@+id/topview"

So che è una soluzione brutta, ma questo controllo è troppo limitata.

0

Hai bisogno di fare due cose. Prima di tutto, regola la modalità di input morbido di quell'attività nel manifest.

android:windowSoftInputMode="stateHidden|adjustResize" 

Ciò garantisce che le viste vengano nuovamente visualizzate quando viene visualizzata la tastiera. Quindi, imposta un listener di layout globale nel tuo oncreate nella vista di livello superiore per eseguire il calcolo dell'altezza del dropdown quando il layout cambia. Regola l'altezza del dropdown in modo che sia l'altezza di tutto ciò che si trova sotto la tastiera, meno un po 'di padding, se lo desideri.

v.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 
       autoCompleteView.setDropDownHeight(view2.getHeight()); 
} 

Dove view2 è la vista/layout che include tutto ciò che si trova sotto l'autocompleteview.

1

È inoltre possibile utilizzare android:dropDownAnchor="@id/ per ancorare il menu a discesa a una vista.

0

Basta aggiungere getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); al frammento o attività

Problemi correlati