将触摸事件委托给另一个视图

时间:2015-01-30 10:19:46

标签: android android-listview android-event

我有列表视图。用户可以在全屏Window.FEATURE_NO_TITLE)上打开覆盖此列表视图的对话框。当用户触摸此对话框的背景时,它会关闭。

我需要将此触摸事件委托给列表视图。我的意思是,在MotionEvent.ACTION_DOWN之后我需要关闭对话框(它工作正常),并在列表视图上启动MotionEvent.ACTION_DOWN

我试过这样的事情:

((LinearLayout) findViewById(R.id.dialog_bg)).setOnTouchListener(new    View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        MotionEvent motionEvent = MotionEvent.obtain(event);                          
                        activity.findViewById(R.id.fr_projects_list).dispatchTouchEvent(motionEvent);
                        close();

                        break;

                    default:
                        break;
                }

                return false;
            }
        });

它在列表视图上启动ACTION_DOWN。但那就是全部。 ACTION_MOVE和其他人不起作用= /

1 个答案:

答案 0 :(得分:1)

您只派遣ACTION_DOWN这就是您没有采取任何其他行动的原因。 尝试调度所有操作。

((LinearLayout) findViewById(R.id.dialog_bg)).setOnTouchListener(new    View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
                    MotionEvent motionEvent = MotionEvent.obtain(event);                          
                    activity.findViewById(R.id.fr_projects_list).dispatchTouchEvent(motionEvent);
                    if(event.getAtction==MotinEvent.ACTION_UP) close();
                    return false;
        }
    });