web-dev-qa-db-ja.com

Android Soft KeyBoardをプログラムで閉じるには?

現在、次のコードを使用してソフトキーボードを表示しています

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);

ここでは、上記のコードを使用したため、ソフトキーボードをEdittextにバインドしません。

今、SoftKeyboardを閉じたいので、現在以下のコードを使用していますが、機能していません。

imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);

誰でもsoftKeyboardを閉じるために何を使用するかを提案できますか?


以下の回答に基づいて、EditTextを使用していないことを明確にしたいので、キーボードを表示し、キーボードを非表示にするレイアウトを使用します。 editTextを使用しなかったリモートエリアbcozにキーボードキーイベントを送信したい。

48
Mak

私はテストしましたが、これは機能しています:

...
//to show soft keyboard
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

//to hide it, call the method again
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

ところで、コードの2番目のパラメーターは正しくありません。 here をご覧ください。

94
user942821
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(EditTextName.getWindowToken(), 0);
39
Jana

この作業コードを使用してください:

InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
31
Reddy Raaz

必要に応じて、クラス全体を使用して、KeyboardUtil.hideKeyBoard(context)メソッドをどこでも呼び出すことができます:

public class KeyboardUtil
{
public static void hideKeyboard(Activity activity)
    {
        try
        {
            InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
         }
        catch (Exception e)
        {
            // Ignore exceptions if any
                Log.e("KeyBoardUtil", e.toString(), e);
        }
    }
}
9
Reddy Raaz

Androidソフトキーボードを閉じる/隠す

View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

it's working for me i hope it's work for you..

Android Soft Keyboard

 InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (inputMethodManager != null) {
            inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
        }
3

それを隠すためのuser942821の答え:

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

しかし、これは私がそれを隠すのにも役立ちます:

imm.toggleSoftInput(0, 0);

あなたも試してみたいかもしれません:

imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);

最初のパラメータで「0」を使用すると、奇妙な状況下でキーボードが間違った場所でオンになることがありますが、まだ複製する方法がわかりません。私はまだこの最後の例をテストしていますが、詳細がわかり次第更新します。

詳細については、 toggleSoftInputドキュメントページ を参照してください。

2
uowaep

これはうまくいきます

InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(getWindow().getAttributes().token, 0);
2

キーボードが表示されているかどうかを確認するソリューションがあります

    public static void hideKeyboard(Activity activity) {
        if (isKeyboardVisible(activity)) {
            InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
            imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
        }
    }

    public static boolean isKeyboardVisible(Activity activity) {
        ///This method is based on the one described at http://stackoverflow.com/questions/4745988/how-do-i-detect-if-software-keyboard-is-visible-on-Android-device
        Rect r = new Rect();
        View contentView = activity.findViewById(Android.R.id.content);
        contentView.getWindowVisibleDisplayFrame(r);
        int screenHeight = contentView.getRootView().getHeight();

        int keypadHeight = screenHeight - r.bottom;

        return
                (keypadHeight > screenHeight * 0.15);
    }
0
Boris Treukhov
InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
0
Priyanka

また試すことができます

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
0
mseo

キーボードを隠すには、

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

ここで、「mView」は、画面に表示される任意のビューです

0

このコードは、onItemClickAutoCompleteTextViewからキーボードを隠します

public void onItemClick(AdapterView<?> adapterViewIn, View viewIn, int indexSelected, long arg3) {
     // whatever your code does
     InputMethodManager imm = (InputMethodManager) getSystemService(viewIn.getContext().INPUT_METHOD_SERVICE);
     imm.hideSoftInputFromWindow(viewIn.getApplicationWindowToken(), 0);
}
0
tony gil