美文网首页
DialogFragment点击外部或取消确定隐藏软键盘

DialogFragment点击外部或取消确定隐藏软键盘

作者: 木叶纷飞 | 来源:发表于2019-06-19 17:06 被阅读0次

dismiss()方法优先于onDestroy()执行,重写dismiss,获取dialog中有焦点view,隐藏软键盘;当点击dialog外部区域时,监听触摸事件,关闭软键盘:

//重写dismiss,获取dialog中有焦点view,隐藏软键盘

@Override

    public void dismiss() {

        View view = getDialog().getCurrentFocus();

        if(view instanceof TextView){

            InputMethodManager mInputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);

            mInputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);

        }

        super.dismiss();

    }

//点击dialog外部区域时,监听触摸事件

private void initSoftInputListener() {

        getDialog().getWindow().getDecorView()

                .setOnTouchListener(new View.OnTouchListener() {

                    @Override

                    public boolean onTouch(View view, MotionEvent event) {

                        InputMethodManager manager = (InputMethodManager) getActivity()

                                .getSystemService(Context.INPUT_METHOD_SERVICE);

                        if (event.getAction() == MotionEvent.ACTION_DOWN) {

                            if (getDialog().getCurrentFocus() != null

                                    && getDialog().getCurrentFocus().getWindowToken() != null) {

                                manager.hideSoftInputFromWindow(

                                        getDialog().getCurrentFocus().getWindowToken(),

                                        InputMethodManager.HIDE_NOT_ALWAYS);

                            }

                        }

                        return false;

                    }

                });

    }

相关文章

网友评论

      本文标题:DialogFragment点击外部或取消确定隐藏软键盘

      本文链接:https://www.haomeiwen.com/subject/qjokqctx.html