Принудительная мягкая клавиатура, чтобы показать, когда EditText получает фокус

У меня есть EditText, который я передаю фокусом программно. Но когда я это делаю, я хочу, чтобы клавиатура тоже отображалась (и затем спускайтесь, когда этот EditText теряет фокус). Прямо сейчас пользователь должен нажать на EditText, чтобы отобразить клавиатуру - даже подумал, что EditText уже имеет фокус.

Ответ 1

Вот как я показываю ketyboard:

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);

Ответ 2

<activity   android:name=".YourActivity"
            android:windowSoftInputMode="stateVisible" />

Добавьте это в файл манифеста...

Ответ 3

Чтобы отобразить клавиатуру, используйте следующий код.

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);

Ответ 4

установите для своей активности в вашем манифесте клавиатуру поп-клавиатуры автоматически, когда на экране появляется окно EditText

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

Чтобы скрыть клавиатуру при потере фокуса, установите OnFocusChangeListener для EditText.

В 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);

        }
    }
}

Ответ 5

Чтобы сделать это на основе прослушивателя фокуса, вы должны пойти:

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);
        }
    });

Надеюсь, что это поможет.

Привет!