Android:在拖动视图时启动新的拖动侦听器

时间:2018-10-10 03:55:57

标签: android drag-and-drop

美好的一天!我在拖放侦听器时遇到问题。我有一个类似于日历的视图,您可以在其中上下拖动事件以更改时间,并在左右方向更改日期。问题是,当我在侧面拖动视图一定时间后显示新日期的新线性布局(这将触发更改日期)时,一旦隐藏的布局,拖动侦听器就不会对我的拖动视图做出反应。请注意,通过此操作,我还隐藏了当前正在拖动的视图的父级。

这是我更改职位的代码。对于要拖动的事件容器,我的拖动侦听器与此类似。

topic_partition

这就是我开始拖动日历中事件的方式

    barLeft.setOnDragListener(new OnDragListener() {
        @Override
        public boolean onDrag(View v, DragEvent event) {
            switch (event.getAction()) {
                case DragEvent.ACTION_DRAG_ENTERED:
                    if (position - 1 >= 0) {
                        goToNext = true;
                        v.setBackgroundResource(R.drawable.bg_scheduled_bookings_next_left);
                        changePageRunnable = new Runnable() {
                            @Override
                            public void run() {
                                if (goToNext) {
                                    setPosition(position - 1);
                                    goToNext = false;
                                }
                            }
                        };
                        getHandler().postDelayed(changePageRunnable, 1000);
                    }
                    break;
                case DragEvent.ACTION_DRAG_EXITED:
                case DragEvent.ACTION_DRAG_ENDED:
                    v.setBackgroundColor(Color.TRANSPARENT);
                    goToNext = false;
                default:
                    break;
            }
            return true;
        }
    });
    barRight.setOnDragListener(new OnDragListener() {
        @Override
        public boolean onDrag(View v, DragEvent event) {
            switch (event.getAction()) {
                case DragEvent.ACTION_DRAG_ENTERED:
                    if (position + 1 < scheduledBookingContainer.getChildCount()) {
                        goToNext = true;
                        v.setBackgroundResource(R.drawable.bg_scheduled_bookings_next_right);
                        changePageRunnable = new Runnable() {
                            @Override
                            public void run() {
                                if (goToNext) {
                                    setPosition(position + 1);
                                    goToNext = false;
                                }
                            }
                        };
                        getHandler().postDelayed(changePageRunnable, 1000);
                    }
                    break;
                case DragEvent.ACTION_DRAG_EXITED:
                case DragEvent.ACTION_DRAG_ENDED:
                    v.setBackgroundColor(Color.TRANSPARENT);
                    goToNext = false;
                default:
                    break;
            }
            return true;
        }
    });

这里的问题是我在新显示的linearlayout上的拖动监听器对拖动的视图没有反应。非常感谢任何能帮助我的人。

0 个答案:

没有答案