2

私は SemiClosedSlidingDrawer ( http://pastebin.com/FtVyrcEb ) を使用しており、スライダーの上部に常に表示されるコンテンツ部分にいくつかのボタンを追加しました。

問題は、スライダーが完全に開いている場合にのみクリック可能 (またはクリックイベントがディスパッチされる) ことです...
スライダーが「半開き」の場合、クリックイベントはボタンにディスパッチされないようです...
デバッガーで onInterceptTouchEvent() を調べましたどちらの場合も (開いている/半折りたたまれている)、次のコード

 @Override


     public boolean onInterceptTouchEvent(MotionEvent event) {
            if (mLocked) {
                return false;
            }

            final int action = event.getAction();
            float x = event.getX();
            float y = event.getY();

            final Rect frame = mFrame;
            final View handle = mHandle;

            handle.getHitRect(frame);

            //FOLLOWING THE CRITICAL CODE
            if (!mTracking && !frame.contains((int) x, (int) y)) { 
            return false; 
            }

 

false を返しますが、スライダーが開かれたときにのみイベントがディスパッチされました... クリックに関連する (x,y) が、スライド ドロワーの HandleButton ビューから作成された四角形に含まれているかどうかを確認します...

 

    final Rect frame = mFrame;
          final View handle = mHandle;
          handle.getHitRect(frame);

これは明らかに false です。なぜなら、slidedrawer のコンテンツ部分に含まれるボタンをクリックしているからです。 問題はありません...
上で述べたように、問題は、半折りたたみ状態では、コンテンツ部分に含まれるボタンがイベントを受信して​​いないことです。 ...

どうすればこの問題を解決できますか?
折りたたんだときに子をクリックしないようにするスライドドロワーの状態はありますか?
前もって感謝します...

4

1 に答える 1