Kann die Webseite sich der virtuellen virtuellen Tastatur bewusst sein

Ich habe Web-Seite mit Jquery-Terminal und versteckte Textarea (die auslösen Android Virtual Keyboard), kann ich Zeichen eingeben, aber wenn ich einige Befehle eingeben, ist der Inhalt hinter Virtual Keyboard versteckt. Der Terminal-Inhalt blättert nach unten, denn wenn ich einen weiteren Befehl tippe, blättert er. Wenn ich Hardware Keybaord in meinem Telefon scrolling ist richtig (Touch-Scroll funktioniert noch nicht).

Ich habe diese CSS hinzugefügt

  • Ormlite Escape String Methode?
  • Platzieren / Überlappen (z-Index) eine Ansicht über Actionbar-Tabs
  • Wie platziere ich Knöpfe über Bild in android?
  • Konvertieren eines ArrayAdapter in CursorAdapter für die Verwendung in einem SearchView
  • Wie formatiere ich die Eingabe von EditText bei der Eingabe mit Tausenden Trennzeichen (,) in Android?
  • Wie Pop-up ein Teil Bild in Android
  • .terminal textarea { top: 0; width:0; margin-left: -8px; pointer-events: none; } 

    Zu prevoius

     .terminal .clipboard { position: absolute; bottom: 0; left: 0; opacity: 0.01; filter: alpha(opacity = 0.01); filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.01); width: 2px; } .cmd > .clipboard { position: fixed; } 

    Und habe diesen Code im Plugin (textarea wurde für Zwischenablage verwendet).

      self.click(function() { self.find('textarea').focus(); }); 

    Und meine qestion ist das: kann Javascript erkennen, wie groß virtuelle Tastatur ist? Oder vielleicht gibt es andere Möglichkeit, die Größe der Webseite zu ändern, also ist es nur im visuellen Teil (nicht wo Tastatur ist)? Oder vielleicht ist etwas falsch mit meinem Code, es war nicht entworfen, um auf Handy zu arbeiten. Ist die Größe der Tastatur immer gleich , auch wenn Benutzer eine andere installieren?

  • Android getSharedPreferences error: Kartenwert ohne Namensattribut: boolean
  • Dalvik sucht nach .so-Datei mit '.0' Erweiterung - warum?
  • "Die Signierkonfiguration sollte in Gradle-Build-Skripten angegeben werden ..." Ich habe es getan
  • Wie man mehrere Instanz von Service in Android hat
  • Ein großes Bild in PNG speichern
  • Start Android gps service
  • 3 Solutions collect form web for “Kann die Webseite sich der virtuellen virtuellen Tastatur bewusst sein”

    Von dem, was ich gesehen habe, wenn die virtuelle Tastatur auftaucht, wird die Seite nicht verkleinert (um den kleineren Ansichtsbereich zu passen, der mit der virtuellen Tastatur sichtbar ist). So wird dies nicht geben Sie Ihre Seite einen Hinweis auf, ob die Tastatur ist oder nicht. Und ich glaube nicht, dass es einen anderen Weg gibt, diese Informationen zu bekommen.

    Sie können ein Setup machen, wo Sie sich den User-Agenten anschauen, und wenn es für ein Android-Handy ist, wenn der Benutzer auf verschiedene Texteingabeelemente klickt, macht man am unteren Bildschirmrand eine kleine Platzierung für die virtuelle Tastatur.

    Für die Größe der Tastatur, könnte die Aktie Android haben eine Standard-Größe oder Verhältnis oder Prozentsatz, aber kombiniert mit der Tatsache, dass es eine Menge von Android-Mods da draußen und die Tatsache, dass es mehrere Bildschirmauflösungen und Bildschirmverhältnisse gibt es übersetzt In nicht in der Lage, eine feste Nummer für diese haben (wie Tastatur ist x Pixel groß oder y Prozent der Bildschirm Estate). Allerdings können Sie eine gesunde Sinnesannahme machen, dass es etwa die Hälfte des Bildschirms an der Unterseite dauert.

    Grundsätzlich können Sie mit dem User-Agenten, der Bildschirmauflösung und der Tatsache, dass der Benutzer auf einem Texteingabefeld "geklickt" hat, eine anständige Vorstellung davon bekommen, ob eine virtuelle Tastatur angezeigt wird oder nicht, und wieviel Platz, um beiseite zu lassen es.

    1 Du kannst das android: windowSoftInputMode- Attribut innerhalb des <activity> -Elements in deiner Manifest.xml , um zwischen verschiedenen Größenänderungsstrategien auszuwählen, wenn das IME auftaucht. Dazu gehören (nicht beschränkt auf):

    adjustResize , die die Inhaltsansicht Ihrer Aktivität (und die WebView in ihr) verkleinern wird, um den verbleibenden Platz zu passen.

    adjustPan , die die Inhaltsansicht verlassen wird, um den gesamten Bildschirm zu füllen, der teilweise durch das IME-Fenster verschlossen ist.

    Das Spielen mit diesen kann Ihnen schon das Verhalten geben, das Sie suchen.

    2 Android-Standardverhalten, wenn es darum geht, eine (Web-) Ansicht zu scrollen, wenn das IME auftaucht, ist, dass es versucht, den Cursor sichtbar zu halten. In deinem Fall steckst du deinen Cursor (oder: Fokus) auf eine versteckte Ansicht. Dies erklärt das komische Verhalten, das du siehst und ich denke, du würdest gut tun, um deine Implementierung zu ändern. Warum benutzt man nicht einen sichtbaren Textbereich an erster Stelle? Dein Text muss irgendwo ankommen, richtig? Und dann wird Android mit dem Fokus / Scroll automatisch umgehen.

    Als Workaround: etwas, das Sie ausprobieren können, ist, Ihre versteckte Ansicht intelligenter zu positionieren und ihren Inhalt von Zeit zu Zeit klar zu machen und damit Ihr Scrolling-Problem auszuweichen. Natürlich hängt die Lebensfähigkeit dieser Option von Ihrem genauen Anwendungsfall ab.

    3 Dies wird die Antwort auf die Frage, die Sie fragen, aber ich bin unsicher, wie dies wird Ihnen helfen (vielleicht wegen meiner Unerfahrenheit mit html):

    Um die Höhe der WebView (die Bildschirmgröße – IME Höhe) in Ihrem Javascript zu erhalten, gehen Sie wie folgt vor:

    • In deinem Manifest füge das android:windowSoftInputMode="adjustResize" Attribut zu deinem Element hinzu.
    • Erweitere das äußere Layout wie folgt:

       public class RelativeLayoutWithLayoutListener extends RelativeLayout { public interface LayoutListener { public void onLayout(); } private LayoutListener mListener; public RelativeLayoutWithLayoutListener(Context context) { super(context); } public RelativeLayoutWithLayoutListener(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public RelativeLayoutWithLayoutListener(Context context, AttributeSet attrs) { super(context, attrs); } public void setLayoutListener(LayoutListener aListener) { mListener = aListener; } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); if (mListener != null) { mListener.onLayout(); } } } 
    • Tauschen Sie Ihr altes Layout für das neu erstellte in Ihrer layout.xml Datei aus.

    • In deinem Aktivitätscode mache so etwas:

       public class MainActivity extends Activity { private RelativeLayoutWithLayoutListener mMainLayout; private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMainLayout = (RelativeLayoutWithLayoutListener)findViewById(R.id.main_layout); mMainLayout.setLayoutListener(new LayoutListener() { @Override public void onLayout() { mWebView.loadUrl("javascript:setSize(" + mMainLayout.getWidth() + "," + mMainLayout.getHeight() + ")"); } }); mWebView = (WebView)findViewById(R.id.webview); } } 

    Natürlich müssen Sie in der callUrl () anrufen eine Javascript-Methode anrufen, die Sie definiert haben. Sie können natürlich auch in der Höhe des IME passieren, wenn Sie zuerst einige Berechnungen durchführen.

    Wenn du nach dem Weg suchst, um den Terminalinhalt auch dann sichtbar zu machen, wenn der Keyboard Pop ist, musst du die Tastaturgröße nicht kennen. Das Problem ist in deiner "#shell" Höhe. Versuchen Sie, Entwickler-Tools auf Chrome (Desktop) zu öffnen und das Fenster zu vergrößern. Sie werden sehen, dass die Höhe von "#shell" div immer auf "#shell" passt, nicht die Inhaltsbereichshöhe. Also, wenn die Tastatur Pop, wird der Inhalt auf der Rückseite der Tastatur sein. Um es zu funktionieren, sollten Sie Ihre "#shell" Höhe an den Inhaltsbereich "#shell" . Ich versuche, das CSS zu modifizieren und es funktioniert richtig in meinem Android Emulator. Entfernen Sie auch die touch-scroll js von Ihrer Seite, es ist unnötig. Sie können diesen CSS-Code an Ihre CSS-Datei anhängen.

     #shell { position: fixed !important; top: 0; left: 0; width: 100% !important; height: 100% !important; margin: 0 !important; padding: 0 !important; -webkit-transition: none !important; -webkit-transform: none !important; overflow-y: visible !important; } #shell .terminal-output, #shell .cmd { margin: 10px; } 

    Ich hoffe das hilft. 🙂

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