2016-05-10 25 views
1

Ich habe mehrere Versuche untersucht und versucht, die Navigationsleiste nicht anzuzeigen, wenn die Softtastatur auf dem Bildschirm angezeigt wird ... ohne Erfolg. Aber ich stieß auch auf ein Nebenproblem. Ich verwende die häufig verwendete Methode der Verwendung von "Immersive-Modus" in der OnResume() meiner Basisaktivität.So verhindern Sie, dass die Android-Navigationsleiste angezeigt wird, nachdem die Softtastatur angezeigt wird

public void HideTheDarnBars() 
    { 
     View decorView = Window.DecorView; 
     var uiOptions = (int)decorView.SystemUiVisibility; 
     uiOptions |= (int)SystemUiFlags.Fullscreen; 
     uiOptions |= (int)SystemUiFlags.HideNavigation; 
     uiOptions |= (int)SystemUiFlags.ImmersiveSticky; 
     uiOptions |= (int)SystemUiFlags.LayoutFullscreen; 
     uiOptions |= (int)SystemUiFlags.LayoutHideNavigation; 
     decorView.SystemUiVisibility = (StatusBarVisibility)uiOptions; 
    } 

Aber dieser Code scheint „außer Kraft gesetzt“ dadurch zu erhalten, dass die Tastatur verschwindet (wenn die besitzende Aktivität geht weg) nach der onResume neu gestartete Aktivität geschieht() aufgerufen wird. Dadurch bleiben die Status-/Navigationsbalken aufgrund des Standardverhaltens der Soft-Tastatur im Spiel (d. H. Tastatur wird angezeigt, Status-/Navigationsleisten werden angezeigt). Was ist der beste Weg, damit umzugehen? Ich möchte, dass die verdammten Bars immer weg sind.

Antwort

0

Nun, es kam mir in den Sinn, damit umzugehen, indem ich explizit die Soft-Tastatur in der eigenen Aktivität lösche, bevor meine nächste Aktivität beginnt. Dies scheint zu ermöglichen, die Einstellung in OnResume() zu halten. Ansicht anzeigen = CurrentFocus; if (view! = Null) { InputMethodManager imm = (EingabeMethodManager) GetSystemService (InputMethodService); imm.HideSoftInputFromWindow (view.WindowToken, 0); }

Hoffe das spart jemand einige Zeit. Wenn Sie einen besseren Weg haben, bin ich ganz Ohr.

Verwandte Themen