web-dev-qa-db-ja.com

EditTextがフォーカスを取得したときにソフトキーボードを強制的に表示する

プログラムでフォーカスを移しているEditTextがあります。しかし、そのときは、キーボードも表示させたい(そして、そのEditTextがフォーカスを失ったときに下げたい)。現在、ユーザーはキーボードを表示するためにEditTextをクリックする必要があります(EditTextが既にフォーカスされている場合でも)。

12
Cote Mounyo

これが私がケティボードを見せている方法です:

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
17
Waza_Be
<activity   Android:name=".YourActivity"
            Android:windowSoftInputMode="stateVisible" />

これをマニフェストファイルに追加...

23
Anil Bhatiya

画面にEditTextボックスが含まれているときにキーボードを自動的にポップするように、マニフェストのアクティビティにこれを設定します

<activity Android:windowSoftInputMode="stateAlwaysVisible" ... />

フォーカスを失ったときにキーボードを非表示にするには、EditTextにOnFocusChangeListenerを設定します。

OnCreate()内

EditText editText = (EditText) findViewById(R.id.textbox);
OnFocusChangeListener ofcListener = new MyFocusChangeListener();
editText.setOnFocusChangeListener(ofcListener);

このクラスを追加

private class MyFocusChangeListener implements OnFocusChangeListener {

    public void onFocusChange(View v, boolean hasFocus){

        if(v.getId() == R.id.textbox && !hasFocus) {

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

        }
    }
}
7
jad

キーボードを表示するには、次のコードを使用します。

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);

キーボードを非表示にするには、以下のコードを使用します。 etはEditTextへの参照です

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
6
Rohit

フォーカスリスナーに基づいてそれを行うためにあなたは行くべきです:

final InputMethodManager imm =(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus){
                imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
            }else{
                 imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
            }
            imm.toggleSoftInput(0, 0);
        }
    });

お役に立てれば。

よろしく!

0
Martin Cazares