按下后退按钮时如何保持软键盘打开

时间:2014-03-30 11:31:55

标签: android keyboard

我有这样的方法:

public boolean onKeyPreIme(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        EditText editText = (EditText) findViewById(R.id.editText1);
        editText.requestFocus();
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
                InputMethodManager.HIDE_IMPLICIT_ONLY);
        return false;
    }
    return super.dispatchKeyEvent(event);
}

但这对我不起作用,如果按下后退键,如何保持软键盘仍然打开?

1 个答案:

答案 0 :(得分:0)

您可以通过重写onKeyPreIme方法来处理后退键来专门化EditText小部件。

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attr) {
        super(context, attr);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        boolean retVal = false;

        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
            InputMethodManager manager = (InputMethodManager) this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            manager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
        }
        return retVal;
    }
}

然后在Activity中使用这个专门的EditText小部件。我正在使用的片段布局代码段。

 <com.example.MyEditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:inputType="text" />