AlertDialog dispatchTouchEvent - PullRequest
0 голосов
/ 21 января 2020

Я хочу перенести событие в диалог из представления onTouchListener

Я пробовал AlertDialog.dispatchTouchEvent, но это не работает, событие просто останавливается на моем виде и больше не go.

Код :

        final View v = new View(this);
        v.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
        final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
        params.format = PixelFormat.TRANSLUCENT;
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        params.packageName = getPackageName(); 
        getWindowManager().addView(v,params);
        v.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v,MotionEvent event) {
                if(event.getAction()==MotionEvent.ACTION_UP) {
                    d.getButton(DialogInterface.BUTTON_NEGATIVE).setText(no);
                    d.getButton(DialogInterface.BUTTON_POSITIVE).setText(yes);
                } else {
                    int[] pos = new int[2];
                    Button b = d.getButton(DialogInterface.BUTTON_NEGATIVE);
                    int w = b.getWidth();
                    int h = b.getHeight();
                    b.getLocationOnScreen(pos);
                    if(event.getRawX() < pos[0] + w && event.getRawX() > pos[0] && event.getRawY() < pos[1] + h && event.getRawY() > pos[1]) {
                        b.setText(yes);
                        d.getButton(DialogInterface.BUTTON_POSITIVE).setText(no);
                    } else {
                        b.setText(no);
                        d.getButton(DialogInterface.BUTTON_POSITIVE).setText(yes);
                    }
                }
                return d.dispatchTouchEvent(event);
                //return false;
            }
        });

d - диалог, который я хочу передать MotionEvent ... да, нет - строки с текстом

...