2016-06-07 13 views
0

Ich habe seltsame Fall von noch sichtbaren Soft-Tastatur. Einfacher Fluss. Aktivität ohne Editiertexte, wo die Soft-Tastatur ausgeblendet ist. Von Manifest:Noch sichtbare weiche Tastatur

<activity 
     android:name=".activities.MainActivity" 
     android:theme="@style/MainActivity" 
     android:windowSoftInputMode="stateAlwaysHidden" /> 

... und auch von Code überprüft

 this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

In dieser Aktivität habe ich ein Fragment, das webview enthält. Ich habe dieser Webansicht einen Touchlistener hinzugefügt, der 'Space' Schlüssel an sie sendet.

protected View.OnTouchListener onTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       Instrumentation inst = new Instrumentation(); 
       inst.sendKeyDownUpSync(KeyEvent.KEYCODE_SPACE); 
     } 
     return false; 
    } 
}; 

Es behandelt Start/Pause-Effekt, wo ich Vimeo Video-Content dieser Webview habe. Zuvor habe ich versucht, mit vimeo video player per JavaScript-Handler zu kommunizieren, aber es war nicht funktionieren. Das Senden eines Schlüsselereignisses ist eine wirklich einfache Lösung und funktioniert auf allen Geräten mit Ausnahme eines Geräts. Auf dem Bildschirm t01c, wenn der Touchlistener aufgerufen wird, erscheint die Software-Tastatur. Ich kann es mit einfachen verstecken

aber es ruiniert immersiven Modus der Aktivität - Navigationsleiste zeigt und verschwindet. Wie kann man die Tastatur dauerhaft sperren? Hat jemand ähnliches Problem?

Antwort

-1

Versuchen Sie, diese

setzen diese statische Methode in der Klasse Utils

public static void hideKeyboard(Activity activity) { 
      try { 
       InputMethodManager input = (InputMethodManager) activity 
         .getSystemService(Activity.INPUT_METHOD_SERVICE); 
       input.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

Rufen Sie diese Methode egal wo Sie die Tastatur von Utils.hideKeyboard (YOURACTIVITY.this) ausblenden möchten;

+1

Haben Sie die Frage bis zum Ende gelesen? Ich schrieb, dass diese Lösung den immersiven Modus ruiniert. – Nihilus13

Verwandte Themen