Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android自定义拖动阴影不可见_Android_Drag And Drop - Fatal编程技术网

android自定义拖动阴影不可见

android自定义拖动阴影不可见,android,drag-and-drop,Android,Drag And Drop,我想将自定义文本视图显示为拖曳阴影。为此,我扩展了View.DragShadowBuilder类。但拖放时不显示任何内容 这是我的自定义拖放阴影生成器类: class MyShadow extends View.DragShadowBuilder { private TextView shadow; public MyShadow(View view) { super(view); shadow = new TextView(getBa

我想将自定义文本视图显示为拖曳阴影。为此,我扩展了View.DragShadowBuilder类。但拖放时不显示任何内容

这是我的自定义拖放阴影生成器类:

class MyShadow extends View.DragShadowBuilder
{

    private  TextView shadow;


    public MyShadow(View view) {

        super(view);

        shadow = new TextView(getBaseContext());
        shadow.setText("drag");
        shadow.setTextSize(50);
        shadow.setTextColor(Color.WHITE);
        shadow.setLayoutParams(view.getLayoutParams());


    }

    @Override
    public void onProvideShadowMetrics(Point outShadowSize, Point outShadowTouchPoint) {



         int width, height;

        width = getView().getWidth()  *2;

        height = getView().getHeight()  *2;

        outShadowSize.set(width, height);

        outShadowSize.set(width/2, height/2);


    }

    @Override
    public void onDrawShadow(Canvas canvas) {


        shadow.draw(canvas);


    }
}
我会将正在拖动的textview传递到shadow buider,如下所示:

 View.DragShadowBuilder shadowBuilder=new MyShadow(view);
    view.startDrag(data, shadowBuilder, view, 0);

我怀疑问题是由texiew的大小/布局参数引起的。我不知道在哪里以及如何设置它。请帮助。

实际上,您不需要
扩展View.DragShadowBuilder
。您可以将自定义
TextView
的实例传递给构造函数

但请记住,当您以编程方式创建视图时,并不是将其添加到布局中。视图的
getHeight()/getWidth()
为0。这就是为什么拖放时不显示任何内容

那么,您必须测量视图,并在其上调用
layout()

view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
View.DragShadowBuilder shadow = new View.DragShadowBuilder(view);

实际上,您不需要
扩展View.DragShadowBuilder
。您可以将自定义
TextView
的实例传递给构造函数

但请记住,当您以编程方式创建视图时,并不是将其添加到布局中。视图的
getHeight()/getWidth()
为0。这就是为什么拖放时不显示任何内容

那么,您必须测量视图,并在其上调用
layout()

view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
View.DragShadowBuilder shadow = new View.DragShadowBuilder(view);