Android 在平板电脑上显示DialogFragment时隐藏键盘?
我正在使用Android 在平板电脑上显示DialogFragment时隐藏键盘?,android,keyboard,show-hide,dialogfragment,Android,Keyboard,Show Hide,Dialogfragment,我正在使用DialogFragment和ListView(列出所有客户)以及EditText(从列表中搜索),它工作正常。但是,每当从片段中显示对话框时,键盘总是显示出来,用户需要退出。在第一次显示对话框片段时,有没有办法隐藏这个?然后,当用户点击编辑文本时,键盘就会出现 我曾尝试在我的XML中设置android:focusable=“false”,但它总是在单击EditText后隐藏键盘,也没有显示 然后我尝试设置android:focusableInTouchMode=“true”,但是,如
DialogFragment
和ListView
(列出所有客户)以及EditText
(从列表中搜索),它工作正常。但是,每当从片段中显示对话框时,键盘总是显示出来,用户需要退出。在第一次显示对话框片段时,有没有办法隐藏这个?然后,当用户点击编辑文本时,键盘就会出现
我曾尝试在我的XML中设置android:focusable=“false”
,但它总是在单击EditText
后隐藏键盘,也没有显示
然后我尝试设置android:focusableInTouchMode=“true”,但是,如上所述,这应该可以解决您的问题
android:windowSoftInputMode="stateHidden"
或
在对话框Fragment 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;
}
使用此方法,它适用于我:
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);
}
}
案例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:如果您想在选择时关闭键盘autocompletetext或任何其他编辑文本视图,请使用simple
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);
}
我想这会管用的看看这个谢谢朋友们会检查它并让你知道@ganeshowest。我看过所有其他的帖子,它们都是关于活动的,无论我在处理片段时把它们放在哪里,它们都不起作用。。getDialog()与getActivity()是我的关键。谢谢在Android 4.4中,当对话框是
DataPickerFragment
时,它不起作用,我将隐藏键盘方法放在onResume()
方法中,它就起作用了。无论如何,谢谢。
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);
}