2

のアクティビティがありSlidingPaneLayout、内部には 2 つのフラグメントがあります。ListView左側に a MapFragment、右側に a です。ユーザーがパネルを閉じずにマップを移動できるように、生成されたタッチ イベントをインターセプトするにはどうすればよいですか?

右側のパネルを閉じたり開いたりするために使用したい唯一の領域は、最初の 4 分の 1 です。そのエリアの右側にマップを移動したいと思います。

ありがとう

EDIT2:

さて、SlidingPaneLayout を適切にサブクラス化する方法がわかりました。問題は、タッチ イベントを正しくキャプチャする方法です。

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN
            && event.getX() > (getWidth() / 6)) {
        return false;
    }
    return super.onTouchEvent(event);
}

このコードでは、マップをスライドできません。固定されたままです。問題は、右側のパネルが選択されている場合にのみ (つまり、マップが表示されている場合にのみ) タッチをインターセプトしたいことです。

4

2 に答える 2

2

私は最終的に問題を解決しました:このメソッドをオーバーライドして、SlidingPaneLayout が閉じているか開いているかを制御するだけです (私の場合、ブール値フィールド値は「開いています」)。

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    if (!homeActivity.open && event.getX() > (getWidth() / 5)) {
            return false;
        }
    return super.onInterceptTouchEvent(event);
}
于 2013-09-21T15:00:55.720 に答える