2

私は自分のトグルボタンを持っています:

@Override
public boolean onTouchEvent(MotionEvent event) {

    super.onTouchEvent(event);

if (event.getAction() == MotionEvent.ACTION_MOVE) {

        if (event.getY() >= getHeight()) {
            if(isChecked()) {
                this.setChecked(true);
                this.performClick();
            }
        } else if (event.getY() <= 0) {
            if(!isChecked()) {
                this.setChecked(false);
                this.performClick();
            }
        }
    }
    return true;
}

ユーザーがトグルボタンに指を置いているかどうかを検出して変更したい。しかし、ユーザーがコントロールの外側で指を押すと、onTouchEventを検出できません。解決策は何ですか?

4

1 に答える 1

0

ビューに登録できOnTouchListenerます。

mOnTouchListener = new OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            final int action = motionEvent.getAction();
            boolean ret = false;

            switch (action) {
            case MotionEvent.ACTION_DOWN:
                ret = ...;
                break;
            case MotionEvent.ACTION_MOVE:
                ret = ...;
                break;
            case MotionEvent.ACTION_UP:
                ret = ...;
                break;
            }

            return ret;
        }
    };      

メソッドによって返されるonTouch(View view, MotionEvent motionEvent)ものは、他の OnTouchListener() がこのイベントを監査するか、監査しないかを定義します。この質問を見ることができます。

編集: OnTouchListener () クラスを作成し、それぞれを登録してモーション イベントを
観察します。リスナー。twobuttonparenttrueonTouch

于 2012-07-19T09:02:15.113 に答える