Frage

Ich habe ein Layout, das an der Spitze eine große EditText Ansicht hat + eine Reihe von Schaltflächen am unteren Rande. Die EditText wird zu schrumpfen und zu erweitern, wenn der ime aktiviert / deaktiviert durch adjust_resize verwenden. Die Schaltflächen am unteren Rand über dem ime nach oben gedrückt wird.

Ich mag diese Tasten verstecken, wenn die ime Displays, genügend Platz für die EditText Ansicht zur Verfügung zu stellen.

Ich habe bisher versucht, die folgenden:

  • subclassed EditText und die Aktivität von der Möglichkeit einen Rückruf auf die Ansicht der OnSizeChanged.

  • registrieren
  • diesen Rückruf verwendet, um die Sichtbarkeit der Schaltflächen zu ändern (eigentlich die Layout-Container) zu GONE.

Diese Arbeit OK und versteckt sich die Tasten, wenn die ime sich öffnet. Allerdings ist die EditText nicht in das neue Platzangebot erweitern. Wenn darüber hinaus die ime entsorgt wird, das EditText Feld ist jetzt größer, als es ursprünglich war, schieben (die jetzt zeigt), um außerhalb des Bildschirms.

Ich möchte auch hinzufügen, dass, wenn Sie den ersten Buchstaben in die Ansicht eingeben und die ime zeigt die Word-Optionen, wird der Bildschirm neu gezeichnet und die EditText den freien Raum füllt.

Alle Ideen, wie dies zur Arbeit kommen? Oder noch besser, ist es eine einfachere Lösung für meine Anforderung?

Danke ...

NB:. Meiner Ansicht nach, Scrollen ist keine gute Option

War es hilfreich?

Lösung

Ich habe diese an der Arbeit durch das obige Verfahren ein wenig zu ändern:

  • Wrapped das gesamte Layout mit einem FrameLayout

  • subclassed die FrameLayout und die Aktivität von der Möglichkeit einen Rückruf auf dem Layout zu registrieren ist OnMeasure

Das gibt der Aktivität eine Chance zu ändern Sichtbarkeit von Ansichten, bevor diese gemessen werden.

Ich würde immer noch sehr glücklich sein, über einfachere Lösungen zu hören, vor allem in Bezug auf herauszufinden, ob die Tastatur zur Zeit sichtbar ist oder nicht. (Dumpsys Fenster zeigt diese Informationen. Können wir leicht um es zu bekommen?)

Andere Tipps

Haben Sie Anruf myView.invalidade() versucht?

Ich war die GONE Eigenschaft verwenden, aber dann zu button.setVisibility(View.INVISIBLE); geändert, weil ich anderen Sachen nicht auf meinem Bildschirm.

auf dem adjust_resize, müssen Sie wieder überprüfen, wenn die Tastatur und zeigen wieder die Tasten gegangen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top