3

たくさんのEditTextsとボタンのあるアクティビティがあります。ユーザーがボタンをクリックすると、EditTextsからの入力に基づく回答がボタンのキャプションに表示されます。buttonclickハンドラーで、フォーカスをボタンに変更すると、EditTextにフォーカスがあるものからカーソルが消えますが、ソフトキーボードは画面に残ります。ソフトキーボードを強制的に消滅させるにはどうすればよいですか?

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

Javaでこれを行う方法についていくつかの回答を見てきましたが、それらをC#に変換する方法を理解できませんでした。

アドバイスありがとうございます。

4

5 に答える 5

3

次のようなことができます。

var inputManager = (InputMethodManager)GetSystemService(InputMethodService);
inputManager.HideSoftInputFromWindow(editText.WindowToken, HideSoftInputFlags.None);
于 2012-04-03T20:44:02.443 に答える
2

上記のJon Oの答えは完璧です。こんな使い方です。

Window.SetSoftInputMode(SoftInput.StateHidden);
于 2013-01-03T09:12:34.457 に答える
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);
            }
        };



    }

上記のコードで指定されたメソッドを使用しました。両方のテキスト ボックスにソフト キーパッドを表示したくありません。機能していません。間違って書きましたか?

于 2013-02-06T12:30:27.770 に答える
1

これは役に立ちますか?

ここに方法があるようです:

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

于 2012-04-03T20:31:54.510 に答える
1

これは完全に機能するソリューションです:

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);
            }
        };
于 2013-02-06T10:32:36.340 に答える