android自定义拖动阴影不可见
我想将自定义文本视图显示为拖曳阴影。为此,我扩展了View.DragShadowBuilder类。但拖放时不显示任何内容 这是我的自定义拖放阴影生成器类: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
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);