2013-09-23 22 views
0

当我拖动项目时我想在阴影部分显示文本换句话说我想在阴影部分中的项目文本(当用户长时间点击并想要放到另一个地方)! startdrag在我打电话给myshadow时我有数据和项目文本我无法在阴影框中设置文本(clor是黄色的)。如何在Android中的阴影框中显示文本项?

OnItemLongClickListener listSourceItemLongClickListener = new OnItemLongClickListener() { 
@Override 
public boolean onItemLongClick(AdapterView<?> l, View v, int position, 
     long id) { 

    // Selected item is passed as item in dragData 
    ClipData.Item item = new ClipData.Item(lv_arr[position]); 

    String[] clipDescription = { ClipDescription.MIMETYPE_TEXT_PLAIN }; 
    ClipData dragData = new ClipData((CharSequence) v.getTag(), 
      clipDescription, item); 
    DragShadowBuilder myShadow = new MyDragShadowBuilder(v); 

    v.startDrag(dragData, // ClipData 
      myShadow, // View.DragShadowBuilder 
      lv_arr[position], // Object myLocalState 
      0); // flags 

    // commentMsg = v.getTag() + " : onLongClick.\n"; 
    // comments.setText(commentMsg); 

    return true; 
} 
} 
private static class MyDragShadowBuilder extends View.DragShadowBuilder{ 
    private static Drawable shadow; 

public MyDragShadowBuilder(View v) { 
    super(v); 
    shadow = new ColorDrawable(Color.LTGRAY); 
} 

@Override 
public void onProvideShadowMetrics(Point size, Point touch) { 
    int width = getView().getWidth(); 
    int height = getView().getHeight(); 

    shadow.setBounds(0, 0, width, height); 
    size.set(width, height); 
    touch.set(width/2, height/2); 
} 


@Override 
public void onDrawShadow(Canvas canvas) { 
    shadow.draw(canvas); 
} 
} 

回答

0

我相信你可以覆盖onDrawShadow(Canvas canvas)(你实际上已经覆盖),并使用画布对象引用调用的方法传递drawText要在那里的文本。

试试看。

0

是的,谢谢你; 我刚刚补充说,这对我有用!

@Override 
    public void onDrawShadow(Canvas canvas) { 

     shadow.draw(canvas); 
     super.onDrawShadow(canvas); 

    }