2014-05-14 6 views
5

Ich habe eine AutoCompleteTextView in meiner App und ich hatte die Aufgabe, die vertikale Bildlaufleiste immer anzeigen zu lassen, ob die Ergebnisse dieser Textansicht zahlreich genug sind, um gescrollt zu werden (dh es gibt mehr Ergebnisse, als gleichzeitig passen können) in der automatisch erstellten Listenansicht).Wie erzwinge vertikale Bildlaufleiste um anzuzeigen, ob AutoCompleteTextView Ergebnisse scrollen können?

Ich habe versucht, die folgenden XML-Attribute hinzufügen zu dem AutoCompleteTextView sich ohne Erfolg:

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

ich denke ich, wenn ich irgendwie einen Verweis auf die Listenansicht automatisch für die AutoCompleteTextView erstellt erhalten könnte und eine Anwendung oder mehr der oben genannten Attribute dazu, dass ich die Bildlaufleiste immer zum Anzeigen zwingen könnte, aber ich habe keine Ahnung, wie man einen Verweis auf diese Listview bekommt.

Dank

UPDATE

Im Adapter I für diesen AutoCompleteTextView erstellt, in der überschriebenen getView() Methode, habe ich einen Verweis auf die übergeordneten Ansicht. Ich kann diese Attribute programmatisch auf den Eltern setzen und ich bekomme die gewünschte Funktionalität, der Nachteil ist, dass diese Attribute jedes Mal gesetzt werden, wenn getView aufgerufen wird, was nicht die effizienteste ist?

+0

Sie noch weitere Updates zu diesem Thema? Ich stehe vor dem gleichen Problem, ich kann bestätigen, dass Ihre getView-Lösung funktioniert. – chris

Antwort

3

Ich habe versucht Stile, aber sie funktionieren nicht richtig, so scheint Ihre codierte Art wie die einzige Möglichkeit. Aber die Gruppe auf jeder Zeit gegeben ist, so könnte man nur einen boolean für dieses Add:

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

Das Problem mit dieser Lösung ist, dass es nur funktioniert, wenn das Dropdown (dd) das erste Mal erscheint. Wenn Sie die Buchstaben löschen und erneut eingeben, funktioniert das zweite Mal nicht mehr. Eine Problemumgehung wäre, den Booleschen Wert auf false zu setzen, wenn Sie die Elemente dem Adapter hinzufügen, aber selbst dann funktioniert es nur, wenn das dd neu erstellt wird. Dies ist nur der Fall, wenn die Anzahl der Buchstaben unter dem Schwellenwert liegt, der die Anzeige von dd verursacht. – Bevor