Gibt es irgendeine Weise in android, um die Höhe der virtuellen Tastatur des Gerätes zu erhalten

Gibt es irgendeine Möglichkeit in Android, um die Höhe der virtuellen Tastatur von Android-Gerät in Laufzeit zu bekommen. Eigentlich möchte ich Textbox über Tastatur zeigen.

  • Wie integriere ich Google Plus und Facebook Authentication zusammen in der gleichen Aktivität von Android-Projekt?
  • Android / Java: HttpURLConnection gibt keine Header von umgeleiteten Dateien zurück (zB auf S3)
  • Ionic Android Build hörte auf zu arbeiten
  • Handler vs AsyncTask vs Thread
  • Caching im Android-Webview
  • Behandle eine leere Antwort in einem JSONRequest mit Volley
  • Wie kann ich das Bild in der android Galerie speichern?
  • ADB-Server nicht ACK auf MacOS
  • Alternativen zu PreferenceFragment mit android-support-v4
  • Testpaket für verschiedene Aromen im Android Studio
  • Bibliotheken werden nach dem Upgrade auf ADT 22 nicht mehr zu APK hinzugefügt
  • Warum darf mein TableLayout nicht aufgeblasen werden?
  • 6 Solutions collect form web for “Gibt es irgendeine Weise in android, um die Höhe der virtuellen Tastatur des Gerätes zu erhalten”

    Ja, Sie können mit Hilfe von Viewtree Observer und einem globalen Layout-Listener einfach die unten erwähnten Schritte ausprobieren

    1. Holen Sie sich die Wurzelansicht Ihres Layouts
    2. Bekomm den Viewtree-Beobachter für diesen Root und füge hierzu einen globalen Layout-Listener hinzu.

    Jetzt, wann immer eine weiche Tastatur angezeigt wird, wird Android Ihren Bildschirm neu sortieren und Sie erhalten einen Anruf an Ihren Zuhörer. Das ist es nur das, was du jetzt tun musst, um den Unterschied zwischen der Höhe zu berechnen, die deine Wurzelansicht nach Re-Size und Originalgröße hat. Wenn der Unterschied mehr als 150 gilt dies als eine Tastatur wurde aufgeblasen.

    Unten ist ein Beispielcode

    root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){ public void onGlobalLayout(){ int heightDiff = root.getRootView().getHeight()- root.getHeight(); // IF height diff is more then 150, consider keyboard as visible. } }); 

    Grüße, Techfist

    Ich habe viele vorgeschlagene Methoden dafür versucht, aber keiner schien für Android SDL zu arbeiten. Ich denke, das ist entweder, weil das SDL-Display "Vollbild" ist oder dass es in einem "AbsoluteLayout" sitzt und damit die Höhe der "View" sich eigentlich niemals ändert. Diese Methode hat für mich gearbeitet:

    Die Abmessungen der Softtastatur erhalten

     mRootWindow = getWindow(); mRootView = mRootWindow.getDecorView().findViewById(android.R.id.content); mRootView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout(){ Rect r = new Rect(); View view = mRootWindow.getDecorView(); view.getWindowVisibleDisplayFrame(r); // r.left, r.top, r.right, r.bottom } }); 

    Um dies zu lösen, habe ich einen keyboardHeightProvider geschrieben, der die Höhe einer schwimmenden Softtastatur berechnen kann. Die Aktivität kann so eingestellt werden, dass sie sich in der AndroidManifest.xml anpassen oder anpassen.

    https://github.com/siebeprojects/samples-keyboardheight

    Siebe

    Setzen Sie das Textfeld als übergeordneten Boden.

     android:layout_alignParentBottom="true" 

    Und in der manifest-Datei machen die weichen Eingaben adjustresize

     android:windowSoftInputMode="adjustResize" 

    Dann wird das Textfeld nach oben verschoben, wenn die Tastatur erscheint.

    Du kannst es nicht sagen Nein, wirklich: Sie können einfach nicht sagen.

    Die Tastatur muss keine besondere Form haben. Es muss nicht am unteren Rand des Bildschirms platziert werden ( viele der beliebtesten Optionen sind nicht ), es muss nicht seine aktuelle Größe behalten, wenn man Textfelder ändert (fast keiner ist abhängig von den Flaggen). Es muss nicht einmal rechteckig sein . Es kann auch nur den ganzen Bildschirm übernehmen .

    (Kopie meiner Antwort auf eine ähnliche Frage, die Abmessungen der Softtastatur )

    Meine Lösung ist die Kombination aller oben genannten Lösungen. Diese Lösung ist auch hacky aber lösen das Problem (atleast für mich).

    1. Ich habe Plätze auf temporäre Ansicht mit transparentem Hintergrund am unteren Rand des Bildschirms.
    2. Ich habe android:windowSoftInputMode="adjustResize" hinzugefügt android:windowSoftInputMode="adjustResize" Flag in Aktivitäts-Tag in Manifest wie @ Bill schlägt vor.
    3. Jetzt ist die Hauptgeschichte in onGlobalLayout() . Dort berechne ich den Unterschied zwischen der y-Achse der Temp-Ansicht und der Höhe der Wurzelansicht

       final View view = findViewById(R.id.base); view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int rootViewHeight = view.getRootView().getHeight(); View tv = findViewById(R.id.temp_view); int location[] = new int[2]; tv.getLocationOnScreen(location); int height = (int) (location[1] + tv.getMeasuredHeight()); deff = rootViewHeight - height; // deff is the height of soft keyboard } }); 

    Aber irgendwie, um das Problem von @ zeeshan0026 nur eine einzige Fahne in manifest android:windowSoftInputMode="adjustResize" zu lösen android:windowSoftInputMode="adjustResize" ist genug.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.