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

时间:2013-08-14 16:55:36

标签: android android-layout android-softkeyboard

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

5 个答案:

答案 0 :(得分:23)

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

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

答案 1 :(得分:17)

这是我展示ketyboard的方式:

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

答案 2 :(得分:7)

在您的清单中为活动设置此项,以便在屏幕包含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);

        }
    }
}

答案 3 :(得分:6)

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

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 :(得分:0)

为了根据焦点监听器进行操作,您应该选择:

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

希望这有帮助。

问候!