0

アイテムをドラッグすると、別の言葉でシャドウセクションにテキストを表示したい シャドウセクションにアイテムテキストを表示したい (ユーザーがロングクリックして別の場所にドロップしたい場合)! ここでstartdragには、myshadowを呼び出すときにデータとアイテムのテキストがあります。シャドウボックスにテキストを設定できません(色は黄色です)。

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);
}
}
4

2 に答える 2

0

onDrawShadow(Canvas canvas)(実際にはすでにオーバーライドしている)をオーバーライドし、キャンバスオブジェクト参照を使用して、そこに表示したいテキストを渡すメソッドを呼び出すことdrawTextができると思います。

試してみる。

于 2013-09-23T23:54:33.970 に答える
0

はい、ありがとうございます。私はちょうど追加しました、それは私にとってはうまくいきます!

    @Override
    public void onDrawShadow(Canvas canvas) {

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

    }
于 2013-09-24T22:39:43.347 に答える