3

私のレイアウトでは、VideoView と他の TextView をホストする ScrollView があります。

私の VideoView には、ビデオの再生を開始するための onTouch リスナーがあります。

viPlayer.setOnTouchListener(new OnTouchListener() {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
         if (isPlaying) {
            isPlaying = false;
            viPlayer.stopPlayback();
         } else {
            isPlaying = true;
            viPlayer.start();
         }
         return false;
      }
});

私が直面している問題は次のとおりです。ユーザーが上に指を置き、VideoView下にスクロールし始めるとScrollView、ビデオの再生が開始されます。スクロールが実行されたときに、の子ビューScrollViewは何もしないでください。ScrollView の onScroll のリスナーがないようです。どうすればこれを修正できますか?

4

1 に答える 1

2

更新 何が起こっていたのか説明させてください。子のタッチ イベントは常に最初に呼び出され、親のイベントが呼び出された後にのみ呼び出されます。あなたがやろうとしていることは、ハックなしでは難しいことです。ビデオを最初にタッチすると、タッチイベントが呼び出され、その後スクロールビューのイベントが呼び出されます。ビデオ ビューは、スクロールするかどうかをどのように知ることができますか? あなたが何をしようとしているのかを前もって知りません。では、ビデオを再生する必要があるかどうかをどのように判断できますか?

だから私はこれをテストしましたが、これは私のために働いています。ビデオのタッチイベントをこれに変更します。scrollview のタッチ イベントを削除します。return trueの代わりに に注意してくださいreturn false

        @Override
        public boolean onTouch(View view, MotionEvent motionEvent)
        {
            switch (motionEvent.getAction()){
                case MotionEvent.ACTION_UP:
                    if (isPlaying) {
                     isPlaying = false;
                     viPlayer.stopPlayback();
                    } else {
                     isPlaying = true;
                     viPlayer.start();
                    }
                    break;
            }
            return true;
        }
于 2014-10-06T16:37:26.350 に答える