Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在平板电脑上显示DialogFragment时隐藏键盘?_Android_Keyboard_Show Hide_Dialogfragment - Fatal编程技术网

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);
    }