当我在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;
}
});