0

ドラッグ アンド ドロップで他のテーブルに移動できるテーブル行を含むプロジェクトがあります。これらの行も強調表示できるようにしたいので、focusable と focusableontouchmode を true に設定し、背景を list_selector_background に設定し、行をクリックできるようにしました。OnTouchListener を選択しなくても問題なく動作しますが、onTouchListener を行に設定すると、クリックするとすぐにドラッグ アンド ドロップ プロセスが開始されます。シングルクリックとドラッグアンドドロッププロセスの開始を区別できるように、onTouchListener のレイテンシーを設定する方法はありますか? (ドラッグを開始するには、行をクリックしたままにする必要があります)

OnTouchListener:

private final class MyTouchListener implements OnTouchListener {
    public boolean onTouch(View view, MotionEvent motionEvent) {
        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
            ClipData data = ClipData.newPlainText("", "");
            DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(
                    view);
            view.startDrag(data, shadowBuilder, view, 0);
            view.setVisibility(View.INVISIBLE);
            return true;
        } else {
            return false;
        }

    }
}

行:

teacherRow.setId(tid);
teacherRow.setBackgroundResource(drawable.list_selector_background);
teacherRow.setFocusable(true);
teacherRow.setFocusableInTouchMode(true);
teacherRow.setClickable(true);
teacherRow.setOnTouchListener(new MyTouchListener());

行の OnClickListener で解決しようとしましたが、それもうまくいきませんでした

4

1 に答える 1

0

シングルクリックとドラッグアンドドロッププロセスの開始を区別できるように、onTouchListener のレイテンシーを設定する方法はありますか?

あなたが何をしたいのか完全に理解できたかどうかはわかりませんが、以下のコードを見てください。

        public boolean onTouch(final View view, MotionEvent motionEvent) {
            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                mHandler.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        if (view.isPressed()) {
                            ClipData data = ClipData.newPlainText("", "");
                            DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(
                                    view);
                            view.startDrag(data, shadowBuilder, view, 0);
                            v.setVisibility(View.INVISIBLE);
                        }
                    }

                }, (long) (1.5 * ViewConfiguration.getLongPressTimeout()));
            }
            return false;
        }

mHandler単純なHandlerインスタンスはどこにありますか。

于 2013-02-23T21:01:16.780 に答える