2016-09-21 5 views
0

Wenn Sie sich ansehen, wie IFTTT und Tumblr funktionieren, werden Sie sehen, dass wenn Sie auf das Login-Formular klicken und die Tastatur angezeigt wird, das Logo mit einer coolen Animation entfernt wird.Elemente ausblenden, wenn die Tastatur angezeigt wird

Ich möchte etwas ähnliches tun, also habe ich ein wenig über das Erkennen von Softkeyboard-Ein-/Ausblenden von Ereignissen gesucht, aber keine der gefundenen Lösungen (wie this oder this) ist zuverlässig.

Wie kann ich dieses Verhalten erreichen?

Mein Login-Bildschirm ist etwas überfüllt, so dass ich Elemente ausblenden muss, wenn die Tastatur angezeigt wird oder sonst nicht für alle möglichen Bildschirmkonfigurationen passen.

Antwort

1

Ich hatte das gleiche Problem.

In meiner App hat der Startbildschirm eine EditText für die Suche sowie ein schönes großes Logo. Wenn der Benutzer EditText drückt, um einen Suchbegriff einzugeben, wird die Bildschirmtastatur angezeigt und das Layout so komprimiert, dass die Verwendung von adjustResize genauso schlecht aussah wie die Verwendung von adjustPan.

Nach einiger Forschung auf, wie Sie sagen, wenn die Tastatur erscheint und das Lesen this rant from Dianne Hackborn uns zu sagen, dass wir wirklich nicht Pflege, wenn die Tastatur erscheint, entschied ich mich, dies zu überdenken und es als ein Layout-Problem aussehen . Nur wenn die Höhe des Layouts unter einen bestimmten Schwellenwert fiel, hatte ich ein Problem.

Ich habe eine Unterklasse für das Hauptlayout mit einer Überschreibung für onLayout() erstellt, die ein Callback-Ereignis auslösen würde, wenn a) die Layouthöhe von unter dem Schwellenwert auf über dem Schwellenwert und b) von über dem Schwellenwert auf unter den Schwellenwert gestiegen ist. Je nachdem, wie es läuft, starte ich eine Animation, um entweder das Logo zu entfernen oder es erneut anzuzeigen.

Ich werde diesen Code hier nicht posten, denn wenn ich es jetzt tun würde, würde ich einfach eine ViewTreeObserver.OnGlobalLayoutListener verwenden, um herauszufinden, wann das Layout geändert wurde. Es wäre am ähnlichsten zu this answer, außer dass ich anstelle der Höhe der Änderung der Höhe, würde ich einen bestimmten Schwellenwert festlegen und die entsprechende Animation ausführen, wenn die Höhe den Schwellenwert überschreitet.

+0

Sie haben Recht, ich hatte das Problem in die falsche Richtung. Die Tastatur ist irrelevant, ist die Layoutgröße, die zählt. Das war ein Augenöffner! –

Verwandte Themen