显示对话框的软键盘

我正在显示edittext视图的对话框。 但是,软键盘只有在用户在编辑视图中按下时才会打开。 所以我试着用下面的代码调用一个InputMethodManager。

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(dialogField,0); 

dialogField是input字段。 但是,到底什么时候我应该这样做呢? 我在对话框的onStart()方法中试过,但没有任何反应。 我也尝试请求对话框的焦点之前,但这并没有改变。

我也试过这个代码

 dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange (View v, boolean hasFocus) { if (hasFocus) { Main.log("here"); dialogInput.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); /* InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(dialogField,0); */ } } }); 

在这两个版本。 但是没有软键盘想出现。 Main.log只是一个日志,它显示了这个函数实际上是被调用的。 是的,它被称为。

在打开对话框之前,我可以使用SHOW_FORCED标志来获取键盘。 但是,它不会在退出时closures。 而我只能做到这一点之前,我显示对话框。 在任何callback里面,它也不起作用。

真棒问题,我也试图做到这一点,并find了解决办法。

使用对话框构build器类AlertDialog.Builder你将不得不像这样调用对话框:

 AlertDialog.Builder builder = new AlertDialog.Builder(); AlertDialog dialog; builder.set... dialog = builder.create(); dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); dialog.show(); 

这对我来说工作得很好。

注意:你必须import android.view.WindowManager.LayoutParams; 那里的价值不变。

尝试这个

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

closures

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

这似乎是不可能的。

所以我做了一个新的活动,而不是对话框,让用户在那里编辑。 请注意,在活动中,您可以在清单文件中设置键盘模式。 我将它设置为当活动打开时显示。

还要注意,用硬键在模拟器上进行testing不会打开SHOW_IMPLICIT或0标志的键盘。