4

ここでいくつかの投稿を読み、グーグルも試しました。しかし、まだこの問題があり
ます。サブクラス化されたカスタム ダイアログを作成しました。EditText と Button (「OK」) が含まれています。ダイアログがポップアップしたら、キーボードを自動的に表示したい。

私はこれを置くことで成功しました:

imm = (InputMethodManager) EditDialog.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS);

カスタムダイアログのonCreate ()で

imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

私の却下()で。

これにより、ダイアログがポップアップするとキーボードが開き、「OK」ボタンを押すとキーボードが閉じます。

ただし、ソフトキーボードが開いているときに電話/エミュレーターのホームボタンを押すと、キーボードは開いたままになります。これは、SHOW_FORCEDで強制的に開くためです。したがって、ダイアログの親アクティビティ onPause() メソッドでキーボードが開いている場合、(InputMethodManager から toggleSoftInput() を使用して) キーボードを非表示にしようとしました。HEREに見られるように、これは回避策を使用してのみ可能であるようです。

TL;DR : EditText と Button を含むダイアログがポップアップしたときに、ソフト キーボードが表示されるようにします (EditText に焦点を当てます)。私はそれを機能させましたが、それを適切に閉じるには多くのハックを書く必要がありました.

編集:私はTHISに基づいてコードを作成しました

4

4 に答える 4

2

これはここで答えられました、そしてそれは私にとってうまくいきます。キーボードが表示されているときにホームボタンを押すと、ホームキーを押した後に正しく非表示になります。

于 2011-04-26T22:19:40.260 に答える
0
@Override
public void onResume() {
    super.onResume();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            try {
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInputFromWindow(view.getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
            } catch (Exception e) {

            }
        }
    }, 300);
}

EditTextView型の「ビュー」と。「コンテキスト」は現在のコンテキストです。

ウィッシュはあなたを助けることができます.

于 2016-04-28T10:53:32.273 に答える
-1
editTextProjectName.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editTextProjectName,
InputMethodManager.SHOW_IMPLICIT);
于 2015-04-09T10:40:42.957 に答える
-1

この KeyboardHelper.java クラスを使用して、キーボードの表示と非表示を切り替えることができます

    import android.content.Context;
    import android.view.View;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.EditText;

    /**
     * Created by khanhamza on 06-Mar-17.
     */

    public class KeyboardHelper {

        public static void hideSoftKeyboard(Context context, View view) {
            if (context == null || view == null) {
                return;
            }

            InputMethodManager imm = (InputMethodManager) context
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

        }


        public static void hideSoftKeyboardForced(Context context, View view) {
            if (context == null) {


  return;
        }

        InputMethodManager imm = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromInputMethod(view.getWindowToken(), 0);

    }

    public static void hideSoftKeyboard(Context context, EditText editText) {
        if (context == null) {
            return;
        }
        InputMethodManager imm = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
    }

    public static void showSoftKeyboard(Context context, EditText editText) {

        if (context == null) {
            return;
        }

        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
        editText.requestFocus();
    }

    public static void showSoftKeyboardForcefully(Context context, EditText editText) {

        if (context == null) {
            return;
        }

        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
        editText.requestFocus();
    }




}
于 2019-08-19T13:50:00.317 に答える