在alertdialog中点击edittext以外的某个位置时隐藏android键盘

时间:2014-08-08 21:35:56

标签: android keyboard android-edittext android-alertdialog

当我点击不在edittext中的某个地方时,我想在alertdialog中隐藏键盘。我一直在stackoverflow和谷歌上看起来很好的答案,但我还没有找到一个。那么请你帮帮我吧。我有一个带有4个edittext框的alertDialog布局,如果我在外面点击它,我想关闭键盘。

我希望你能帮助我们,这个人不是重复的答案,因为其他人不是为我工作而且他们不是为了警惕。

谢谢你, 干杯:}

2 个答案:

答案 0 :(得分:0)

让我们说父布局是LinearLayout,你在其中有EditText。

因此找到线性布局的ID。

linearLayout =(LinearLayout)来自XML的findViewById(R.id.linearLayout)。

linearLayout.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if(v == relAppointment1) {
                        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context
                                .INPUT_METHOD_SERVICE);
                        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
                        return true;
                    }
                    return false;
                }
            });

希望这能解决问题。

答案 1 :(得分:0)

@Bhargav Jhaveri

我编辑了你的代码:

   final Dialog dialog = new Dialog(test.this); //created a dialog
    LinearLayout linearLayout= (LinearLayout) dialog.findViewById(R.id.LinearLayout01); //This is dialog layout
    final EditText editText=(EditText)dialog.findViewById(R.id.edt1);  //this is edittext in dialog
    linearLayout.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(v == relAppointment1) { //What is relAppointment1, variable is undefined
                InputMethodManager imm = (InputMethodManager) getBaseContext().getSystemService(Context
                        .INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
                return true;
            }
            return false;
        }
    });

但什么是relAppointment1?

感谢您的回答。请检查我的代码,一切正常吗? 干杯:]