IllegalStateException:拖动阴影的尺寸必须为正

cor*_*lio 2 java android illegalstateexception android-9.0-pie

https://developer.android.com/reference/android/view/View.DragShadowBuilder#public-constructors

当我使用上面概述的第二个构造函数时-“ View.DragShadowBuilder()构造一个没有关联的View的阴影生成器对象。”

引发以下异常:java.lang.IllegalStateException:拖动阴影尺寸必须为正

第二行代码对我来说是这样的:

public boolean onLongClick(View view) {
    view.startDragAndDrop(null, new View.DragShadowBuilder(), view, 0); 
    return true;
}
Run Code Online (Sandbox Code Playgroud)

它仅在Android 9 Pie上发生。我已经在以前的Android版本上尝试过了,没有问题。我在Android问题追踪器上创建了一个问题,但也许这里有人知道为什么会发生或如何解决。

同时,我正在创建新的View.DragShadowBuilderView(view),其中view是一个透明的ImageView,现在可以停止崩溃,但是我不确定这是否是最佳解决方案。

小智 5

无需创建透明视图。创建一个自定义DragShadowBuilder

public class MyDragShadowBuilder extends View.DragShadowBuilder {

    @Override
    public void onProvideShadowMetrics(Point outShadowSize, Point outShadowTouchPoint) {
        outShadowSize.set(1,1);
        outShadowTouchPoint.set(0,0);
    }
}
Run Code Online (Sandbox Code Playgroud)

并替换new View.DragShadowBuilder()new MyDragShadowBuilder()