2013-02-07 5 views
14

Ich habe eine Autocompletetextview Droping-Liste der Vorschläge, bis zum Rand der Soft-Tastatur.Scrollen Dropdown-Menü über die Tastatur in Autocompletetextview

Dann, beim Scrollen über die Liste der Vorschläge: - (in einem Lebkuchen-Telefon) das Drop-Down-Menü erhöht automatisch die Höhe der Tastatur, das ist schön, da es mehr Elemente zeigt. - (in einem ICS-Emulator) erhöht das Dropdown-Menü die Höhe nicht über die Tastatur.

Bezieht sich dies auf eine Systemeigenschaft? Gibt es eine Möglichkeit, das erste Verhalten auch in ICS zu erzwingen?

+0

haben Sie eine Antwort auf dieses spezielle Thema finden? Ich stehe derzeit vor dem gleichen Problem. Vielen Dank. – Andres

+0

Seltsames Verhalten, vor demselben Problem. – Penzzz

Antwort

26

Fügen Sie einfach android: dropDownHeight = "100dp" zum AutoCompleteTextView-Tag in Ihrer Layout-Datei, Es wird funktionieren.

+2

Ich würde dir + Millionen geben, wenn ich könnte ... Du hast meinen Tag gemacht! – keybee

+2

Dies ist ein Workaround, da verschiedene Geräte unterschiedliche Seitenverhältnisse haben, die 100dp keine magische Zahl ist, müssen Sie sie an verschiedene Geräte und Betriebssystemversionen anpassen. Dies ist jedoch der einzige Weg, um es zu lösen, dass ich bisher gefunden habe, so dass ich diese Antwort upvotieren bin. Vielen Dank! – shalafi

+0

Tage der Suche ... Tage der Agonie .. mit so einer einfachen Lösung. Danke – Brandon

2

Lassen Sie mich meinen kleinen Trick erklären, um zu vermeiden, dass das "Dropdown" hinter der Tastatur angezeigt wird. Der Trick ist mit der DropDownAnchor-Eigenschaft. Die Lösung ist der Anker mit einer Ansicht auf der Oberseite des Bildschirms, so dass das Menü von dieser Position verlassen wird und daher nicht von der Tastatur abgedeckt werden. Zum Beispiel:

android:dropDownAnchor="@+id/topview"

Ich weiß, dass ist eine hässliche Lösung, aber diese Kontrolle ist zu begrenzt.

0

Sie müssen zwei Dinge tun. Passen Sie zuerst den Soft-Eingabemodus dieser Aktivität im Manifest an.

android:windowSoftInputMode="stateHidden|adjustResize" 

Damit wird sichergestellt, dass die Ansichten wieder angezeigt werden, wenn die Tastatur angezeigt wird. Legen Sie dann in der On-Create-Ansicht auf der obersten Ebene einen globalen Listener fest, um die Dropdown-Höhenberechnung durchzuführen, wenn sich das Layout ändert. Passen Sie die Dropdown-Höhe an die Höhe von allem unter der Tastatur an, abzüglich einer Auffüllung, wenn Sie möchten.

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

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

Wo view2 ist die Ansicht/Layout, die alles unterhalb der Autocompleteview enthält.

1

Sie können auch android:dropDownAnchor="@id/ verwenden, um das Dropdown zu einer Ansicht zu verankern.

0

Fügen Sie einfach getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); zu Ihrem Fragmente oder Aktivität

Verwandte Themen