DragListener仅适用于牛轧糖中的recyclerview

时间:2017-03-22 05:05:47

标签: android drag-and-drop android-recyclerview android-7.0-nougat android-7.1-nougat

当我在RecyclerView项目上放置项目时,我遇到拖放功能无法在Nougat中运行的问题。 在Pre-Nougat OS中工作正常。仅发布RecyclerView的项目。我发现了一个链接Drag and drop target behavior changed in Nougat我已经在这个链接上发布了这个问题,但我还没有得到任何答案。我想在此上传的链接视频文件中,可以帮助您理解behavior changes in Nougat

这里我解释一下我是如何进行拖放功能的。 在我的例子中,有两个RecyclerView。第一个RecyclerView,可水平滚动,第二个垂直。第一个RecyclerView仅用于拖动,而Second RecyclerView仅用于拖放。 RecyclerVieware都在ScrollView中,因此,我在第二个RecyclerView中禁用了垂直滚动。 我在第二个Recyclerview项目上添加了DragListener。每个项目都有拖拽监听器,所以基于我在放置项目时添加/替换项目。 我还在其中一个TextView上添加了DragListener,这在Nougat中工作。 我在下面的代码中添加了First RecyclerView的OnBindViewHolder。

 viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            ClipData clipData = ClipData.newPlainText("", "");
            View.DragShadowBuilder shadowBuilder = new CustomDragShadowBuilder(view);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                view.startDragAndDrop(clipData, shadowBuilder, view, 0);
            } else {
                view.startDrag(clipData, shadowBuilder, view, 0);
            }
            view.setVisibility(View.INVISIBLE);

            return true;
        }
    });

0 个答案:

没有答案