2012-04-03 7 views
2

Ich habe eine Aktivität mit einer Menge EditTexte und einer Schaltfläche. Wenn der Benutzer auf die Schaltfläche klickt, wird in der Beschriftung der Schaltfläche eine Antwort angezeigt, die auf der Eingabe von EditTexts basiert. Im Buttonclick-Handler ändere ich den Fokus auf die Schaltfläche und der Cursor verschwindet von dem, was EditText im Fokus hat, aber die Soft-Tastatur bleibt auf dem Bildschirm. Wie kann ich die weiche Tastatur zum Verschwinden zwingen?Verstecken der weichen Tastatur in MonoDroid

EditText1.ClearFocus();  
EditText2.ClearFocus();  
EditText3.ClearFocus(); 
calc_btn.Focusable = true; 
calc_btn.RequestFocus(); 

Ich habe mehrere Antworten gesehen, wie dies in Java zu tun, aber ich habe nicht herausfinden kann, wie sie # zu C zu übersetzen.

Vielen Dank für jeden Hinweis.

Antwort

3

Sie etwas tun können:

var inputManager = (InputMethodManager)GetSystemService(InputMethodService); 
inputManager.HideSoftInputFromWindow(editText.WindowToken, HideSoftInputFlags.None); 
+0

Funktioniert perfekt, Greg. Danke vielmals. –

+0

Weiß nicht, warum das bei mir nicht funktioniert hat :( – PCoder

1

Ist this für Sie nützlich?

Es scheint hier eine Methode zu sein:

public override void HideSoftInput (int flags, Android.OS.ResultReceiver resultReceiver)

+0

Ich bin sicher, dass diese Methode nützlich wäre, wenn ich herausfinden könnte, wie man es nennt. Dies führt nicht zu der Methode, so scheint es nicht direkt implementiert zu werden: Android.InputMethodServices.InputMethodService.InputMethodImpl. –

+0

Vergessen Sie nicht, die richtige Antwort zu akzeptieren! :) –

2

Jon O ‚s Antwort oben ist perfekt. So benutzen Sie es.

Window.SetSoftInputMode(SoftInput.StateHidden); 
0

Hier ist eine vollständig funktionierende Lösung:

using Android.Views.InputMethods; 

yourEditTextObject.EditorAction += (object sender, TextView.EditorActionEventArgs e) => 
     { 
      if (e.ActionId == Android.Views.InputMethods.ImeAction.Done) 
      { 
       var editText = sender as EditText; 
       var inputManager = GetSystemService(InputMethodService) as InputMethodManager; 
       inputManager.HideSoftInputFromWindow(editText.WindowToken, 0); 
      } 
     }; 
2
protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     SetContentView (Resource.Layout.Main); 

     Button button = FindViewById<Button> (Resource.Id.button1); 
     button.Click+= onClick; 
     EditText es=FindViewById<EditText>(Resource.Id.editText1); 
     es.EditorAction += (object sender, TextView.EditorActionEventArgs e) => 
     { 

      if (e.ActionId == Android.Views.InputMethods.ImeAction.Done) 
      { 
       var editText = sender as EditText; 
       var inputManager = GetSystemService(InputMethodService) as InputMethodManager; 
       inputManager.HideSoftInputFromWindow(editText.WindowToken, 0); 
      } 

     }; 
     EditText es1=FindViewById<EditText>(Resource.Id.editText2); 
     es1.EditorAction += (object sender, TextView.EditorActionEventArgs e) => 
     { 
      if (e.ActionId == Android.Views.InputMethods.ImeAction.Done) 
      { 
       var editText = sender as EditText; 
       var inputManager = GetSystemService(InputMethodService) as InputMethodManager; 
       inputManager.HideSoftInputFromWindow(editText.WindowToken, 0); 
      } 
     }; 



    } 

Ich habe die angegebenen Methoden in oben code.I verwendet nicht wollen, sowohl für die textboxs.Its die weiche Tastatur zeigen, funktioniert nicht habe ich es falsch geschrieben?

Verwandte Themen