很多人似乎都有这个问题,但他们的解决方案都没有帮助我。
基本上我创建了一个自定义警告对话框,并设置了一个linearlayout作为它的视图。
如果我在显示对话框之前向其添加了editText,一切正常,键盘就会显示出来。
但是,如果我在对话框启动时将editText添加到线性布局,即使我点击编辑文本,即使它之前没有焦点,键盘也不会显示。< / p>
我试过
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
但是没有键盘出现过。
我也尝试过:
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm!=null)
{
imm.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
}
来自alertdialog,但显示的键盘位于对话框后面,因此无法使用。
我只是不明白问题是什么,你们中的任何人都知道解决方案吗?
答案 0 :(得分:1)
之前我遇到了同样的问题,并通过将其添加到我的对话框类
来解决public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
return dialog;
}
您之前说过您使用过此代码,但没有提及您使用过的代码。 试一试,让我知道
并在点击关闭或完成后隐藏它以使用此代码:
final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
答案 1 :(得分:1)
基本上有一个警告对话框是我的问题。它没有让我正确设置内容视图,使用setView(视图)是我的垮台。
通过将我的客户对话框类扩展到对话框而不是警告对话框并使用setContentView()而不是setView()(在警告对话框中可用),我不再遇到软键盘问题。
答案 2 :(得分:0)
首先尝试:
imm.showSoftInput(textView, InputMethodManager.SHOW_IMPLICIT);
如果不起作用,请尝试:
Handler handler=new Handler();
Runnable r=new Runnable(){
public void run() {
imm.showSoftInput(textView, InputMethodManager.SHOW_IMPLICIT);
}
};
handler.postDelayed(r, 100);
第二种方法将延迟打开键盘100毫秒,以防视图仍然设置等
答案 3 :(得分:0)
问题似乎在于,由于您最初隐藏输入文本的位置(或嵌套或其他内容),因此AlertDialog会自动设置标记WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
或WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
,以便不会出现问题。 t触发软输入显示。
解决问题的方法如下:
(...)
// Create the dialog and show it
Dialog dialog = builder.create()
dialog.show();
// After show, clear the flags and set the soft input mode
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);