2014-05-14 12 views
5

Nella mia app ho una vista AutoCompleteTextView e mi è stato imposto di forzare la barra di scorrimento verticale per mostrare sempre se i risultati recuperati da tale vista testo sono abbastanza numerosi da scorrere (ovvero ci sono più risultati di quelli che possono essere contenuti contemporaneamente nella listview autocreata).Come forzare la barra di scorrimento verticale per mostrare se i risultati di AutoCompleteTextView possono scorrere?

Ho provato ad aggiungere il seguente codice XML attribuisce al AutoCompleteTextView sé senza alcun risultato:

fadeScrollbars="false" 
scrollbarFadeDuration="0" 
scrollbarAlwaysDrawVertical="true" 

Sto pensando se potevo in qualche modo ottenere un riferimento alla ListView creati automaticamente per l'AutoCompleteTextView e l'applicazione di una o più degli attributi sopra ad esso che potrei forzare la barra di scorrimento a mostrare sempre, ma non ho idea di come ottenere un riferimento a tale listview.

Grazie

UPDATE

Nel Adapter I creato per questo AutoCompleteTextView, nel metodo override GetView(), che hanno un riferimento alla vista primaria. Posso impostare quegli attributi sopra programmaticamente sul genitore e ottengo la funzionalità desiderata, il lato negativo è che quegli attributi sono impostati ogni volta che viene chiamato getView che non è il più efficiente?

+0

Eventuali ulteriori aggiornamenti su questo? Sto affrontando lo stesso problema, posso confermare che la soluzione getView funziona. – chris

risposta

3

Ho provato gli stili ma non funzionano correttamente, quindi la tua modalità codificata sembra l'unica possibilità. Ma il gruppo è dato in ogni tempo, quindi si può solo aggiungere un valore booleano per questo:

public View getView(int position, View convertView, ViewGroup parent) { 
     //Change the list attr programmatically becuase sometimes Android sucks :/ 
     if (!_changedListAttr) { 
      _changedListAttr = true; 

      ListView list = (ListView) parent; 
      list.setBackgroundResource(R.color.color_white); 
      list.setVerticalScrollBarEnabled(false); 
      list.setDividerHeight(0); 
     } 
+0

Il problema con questa soluzione è che funziona solo quando il menu a discesa (dd) appare la prima volta. Quando si eliminano le lettere e si digita nuovamente, la seconda volta non funziona più. Una soluzione alternativa sarebbe quella di impostare il valore booleano su false quando si aggiungono gli elementi all'adapter, ma anche in quel caso, funziona solo quando il dd verrà ricostruito. Questo è solo il caso in cui il conteggio delle lettere è al di sotto della soglia che fa apparire il dd. – Bevor