1

アプリにドラッグ アンド ドロップを実装しようとして、アクティビティからビューをドラッグし、ドラッグ開始時に作成された新しいフラグメントにドロップしたいのですが、フラグメントでドラッグ リスナーを使用しないでください。私の活動の次のコード:

    findViewById(R.id.button1).setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            vibra();
            ClipData data = ClipData.newPlainText("", "");
            DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
            view.startDrag(data, shadowBuilder, view, 0);

            FragmentShare share = new FragmentShare(getSupportFragmentManager());
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.add(R.id.principal, share);
            ft.addToBackStack(null);
            ft.commit();

            return false;
            }
        });

私のフラグメントのコードは次のとおりです。

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View vv = inflater.inflate(R.layout.fragment_share, container, false);

    vv.findViewById(R.id.button1).setOnDragListener(new OnDragListener() {
        @Override
        public boolean onDrag(View v, DragEvent event) {
            int action = event.getAction();
            switch (action) {
                case DragEvent.ACTION_DRAG_STARTED:
                    break;
                case DragEvent.ACTION_DRAG_ENTERED:
                    v.setEnabled(false);
                    break;
                case DragEvent.ACTION_DRAG_EXITED:
                    v.setEnabled(true);
                    break;
                case DragEvent.ACTION_DROP:
                    manager.popBackStackImmediate();
                    break;
                case DragEvent.ACTION_DRAG_ENDED:
                    manager.popBackStackImmediate();
                    break;
                default:
                    break;
            }
            return true;
        }
    });

    return vv;
}

ただし、ビューの状態は決して変更されず、ビューをドロップしても元に戻りません。これが可能かどうかはわかりません。または、これを実装する他の方法があるかどうかはわかりません。これが何であるか教えてください。

ありがとう。

PD.私の英語でごめんなさい。

4

1 に答える 1

0

アプリケーションの最小 SDK バージョンが 11 の場合、これは機能します。

ビューの X、Y 座標、幅、高さのゲッターとセッターがあります。これらのメソッドを使用して、ビューを画面全体に移動できます。

だから、あなたの仕事を達成するために私がすることは、

1) ビューの onTouchListener でビューの x 位置の更新を開始します。2) 開始するとすぐに、同時にフラグメントを作成します。3) ビューがフラグメントに到達したら、アクティビティを終了し、同じレイアウトをフラグメントに追加します。

このようにして、説明することができます。

お役に立てれば..

于 2013-06-07T22:30:53.687 に答える