我正在使用DialogFragment
ListView
(列出所有客户)和EditText
(从列表中搜索),它运行正常。但是,每当从片段显示对话框时,始终显示键盘并且用户需要辞职。有没有办法在显示对话框片段时第一次隐藏它?然后,当用户点击编辑文本时,键盘应该出现。
我已尝试在我的XML中设置android:focusable="false"
,但在点击EditText
后也始终隐藏键盘也没有显示。
然后我尝试设置android:focusableInTouchMode="true"
但是,与上面相同
答案 0 :(得分:21)
在DialogFragment onCreateView()中添加以下内容:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = super.onCreateView( inflater, container, savedInstanceState );
//to hide keyboard when showing dialog fragment
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
return view;
}
答案 1 :(得分:1)
这应该可以解决您的问题
android:windowSoftInputMode="stateHidden"
或
android:windowSoftInputMode="stateUnchanged"
答案 2 :(得分:0)
使用此方法,对我有用:
public void hideSoftKeyboard() {
try {
View windowToken = getDialog().getWindow().getDecorView().getRootView();
InputMethodManager imm = (InputMethodManager) getDialog().getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow( windowToken.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
} catch (Exception ex) {
Log.e(ex);
}
}
答案 3 :(得分:0)
情况1:如果要在打开对话框片段时关闭键盘
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = super.onCreateView( inflater, container, savedInstanceState );
//to hide keyboard when showing dialog fragment
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
return view;
}
情况2:如果要在选择自动完成文本或其他任何编辑文本视图时关闭键盘,请使用
public static void hideDialogFragmentKeyboard(Context context,View view) {
view.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}, 100);
}
我认为这会起作用