2017-06-26 1 views
0

Ich schreibe eine Aktivität, die viele EditText hat.Strange Android Soft Keyboard Ausgabe

Ihr inputType ist numerischDecimal. Wie folgt aus: Before I click

Jetzt will ich die Soft-Tastatur verstecken, wenn irgendwo anders als die EditTexts klicken, so dass ich:

public void hideKeyboard(View mView) { 
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService 
      (Activity.INPUT_METHOD_SERVICE); 
    inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
} 

Nachdem ich woanders klicken, wird die numericDecimal Soft-Tastatur verschwinden kann. JEDOCH, gibt es immer noch eine gemeinsame Soft-Tastatur ohne Autovervollständigung auf dem Bildschirm, und ich habe absolut keine Ahnung, woher das kommt. Hier zeigen: After I click

Also, wie Sie alle verstecken? Gemeinsame Wege im Internet funktionieren nicht, ich habe sie alle ausprobiert.

Vielen Dank im Voraus!

+0

Stellt sich heraus, dass das seltsame Tastaturproblem aufgrund des fokussierbarenIntouchmodus auftritt. Durch Deaktivieren wird das Problem behoben. –

Antwort

0

diesen Code Versuchen:

public static void setupUI(final View view, final Activity activity) { 

    if (view instanceof ViewGroup) { 
     view.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       Utils.hideSoftKeyboard(activity, view); 
       return false; 
      } 
     }); 
    } 

    if (view instanceof ViewGroup) { 
     for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 
      View innerView = ((ViewGroup) view).getChildAt(i); 
      setupUI(innerView, activity); 
     } 
    } 
} 

    public static void hideSoftKeyboard(Activity activity, View searchET) { 
    try { 
     InputMethodManager mgr = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
     mgr.hideSoftInputFromWindow(searchET.getWindowToken(), 0); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

Rufen Sie die setupUI Funktion und die Eltern-Layout in Ihrer Tätigkeit übergeben. Es stellt sicher, dass jedes Mal, wenn Sie aus Ihrem editText klicken, die Tastatur geschlossen wird.

Hoffe, das hilft.

+0

Dies löste tatsächlich 90% des Problems. Aber es funktioniert nur nach dem ersten Klick, was bedeutet, dass nach dem ersten Klick immer noch die seltsame gemeinsame Soft-Tastatur erscheint. –

+0

Eine Sache, die Sie mehr versuchen können, ist: android: demcendantFocusability = "beforeDescendants" im übergeordneten Layout der Aktivität und dann in onCreate Aufruf parentLayout.requestFocus(); –

Verwandte Themen