android.view.ViewRootImpl не может быть приведен к android.view.View - PullRequest
0 голосов
/ 10 ноября 2018

enter code here Я пытаюсь закрыть всплывающее окно при касании за пределами всплывающего окна. У меня работает API уровня 23+. Но не работает API уровня 17.

Заранее спасибо. введите описание изображения здесь

 LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                        View popupView = layoutInflater.inflate(dosy.app.yds.R.layout.toast_popup, null);
                        final PopupWindow popupWindow = new PopupWindow(popupView,
                                ActionBar.LayoutParams.MATCH_PARENT,
                                ActionBar.LayoutParams.WRAP_CONTENT);
                        popupWindow.setOutsideTouchable(true);
                        popupWindow.setFocusable(true);
                        txtToast=(TextView)popupView.findViewById(dosy.app.yds.R.id.textViewToast);
                        txtToast.setText(mWord);
                        popupWindow.showAsDropDown(widget);
                        final   View parent = (View) popupWindow.getContentView().getParent();
                        //dim the window in the background
                        final WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
                        final  WindowManager.LayoutParams p = (WindowManager.LayoutParams) parent.getLayoutParams();
                        p.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
                        p.dimAmount = 0.2f;
                        wm.updateViewLayout(parent, p);
                        popupWindow.setTouchInterceptor(new View.OnTouchListener()
                        {
                            @Override
                            public boolean onTouch(View v, MotionEvent event) {

                                if(event.getAction()==MotionEvent.ACTION_OUTSIDE){
                                    p.dimAmount = 0.0f;
                                    wm.updateViewLayout(parent, p);
                                    return true;
                                }
                                return false;
                            }
                        });
...