强制软键盘在EditText获得焦点时显示

Cot*_*nyo 12 android android-layout android-softkeyboard

我有一个EditText,我将焦点传递给编程.但是当我这样做时,我希望键盘也能显示出来(然后当EditText失去焦点时向下移动).现在,用户必须单击EditText才能显示键盘 - 甚至认为EditText已经具有焦点.

Ani*_*iya 23

<activity   android:name=".YourActivity"
            android:windowSoftInputMode="stateVisible" />
Run Code Online (Sandbox Code Playgroud)

将此添加到清单文件中...


Waz*_*_Be 17

这是我展示ketyboard的方式:

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)

  • 这确实有效.但是,你必须首先``requestFocus()`到EditText,然后打开键盘,它不会以相反的顺序工作. (9认同)

jad*_*jad 7

当您的屏幕包含EditText框时,将此活动设置为您的清单中的活动以自动弹出键盘

<activity android:windowSoftInputMode="stateAlwaysVisible" ... />
Run Code Online (Sandbox Code Playgroud)

要在失去焦点时隐藏键盘,请为EditText设置OnFocusChangeListener.

在onCreate()

EditText editText = (EditText) findViewById(R.id.textbox);
OnFocusChangeListener ofcListener = new MyFocusChangeListener();
editText.setOnFocusChangeListener(ofcListener);
Run Code Online (Sandbox Code Playgroud)

添加此课程

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

        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Roh*_*hit 6

要显示键盘,请使用以下代码.

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)

要隐藏键盘,请使用下面的代码.et是对EditText的引用

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)