【问题标题】:Delegate touch event to another view将触摸事件委托给另一个视图
【发布时间】:2015-01-30 10:19:46
【问题描述】:

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

我需要将此触摸事件委托给列表视图。我的意思是,在 bg 上的 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 和其他不起作用 =/

【问题讨论】:

    标签: android android-listview android-event


    【解决方案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;
            }
        });
    

    【讨论】:

    • 在我进行触摸事件后,我关闭对话框。所以在那之后对话上不会有其他事件。我应该处理列表视图的事件。
    • @Suvtruf 我更新了我的答案。试一试.. 仅当操作为 ACTION_UP 时才调用 Close
    • 客户希望在 ACTION_DOWN 时关闭对话框,而不是 ACTION_UP。这不是我的选择)=
    • 好吧.. 我猜如果你在 ACTION_DOWN 上关闭对话,那么默认情况下应该在 ListView 上调用另一个事件。尝试将 touchlistner 设置为您的列表视图。我不是 100% 确定,但你可以试试。
    • 这很有帮助,但如果目标视图有边距,它不能 100% 工作,那么克隆的触摸会有点错位。对这个问题有帮助吗?
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多