Android:为什么不能将onClickListener赋予VideoView?

| 我已经编写了以下代码行:
 mVideoView = (VideoView) findViewById(R.id.video_view);
    mVideoView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.v(\"LOG_TAG, click\");
        }
    });
但是,当我运行我的应用程序时,从不调用click事件。 所以我想知道,是否不可能在VideoView上注册OnClickListener?而且,如果是这样,为什么会这样呢?     
已邀请:
        使用
VideoView.setOnTouchListener(..)
适用于VideoView     
        这是我使用onTouch解决VideoViews暂停/播放的方法:
// Class variables
private boolean bVideoIsBeingTouched = false;
private Handler mHandler = new Handler();

vvVideo.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    if (!bVideoIsBeingTouched) {
        bVideoIsBeingTouched = true;
    if (vvVideo.isPlaying()) {
        vvVideo.pause();
    } else {
        vvVideo.resume();
    }
    mHandler.postDelayed(new Runnable() {
        public void run() {
            bVideoIsBeingTouched = false;
        }
        }, 100);
    }
    return true;
    }
});
    
        我知道这很旧,但是我用了这个:
    mVideoView.setOnTouchListener(new View.OnTouchListener()
    {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            Log.i(TAG, \"Video 1 clicked, starting playback\");

            return false;
        }
    });
    
        我知道这是一个老问题,但这是我所做的: 由于未触发setOnClickListener,因此我创建了自己的扩展VideoView的类
public class VideoViewCustom extends VideoView{
并覆盖了onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent ev) {

    if(ev.getAction() == MotionEvent.ACTION_DOWN){
        Log.d(TAG, \"ACTION_DOWN\");
    }

    return super.onTouchEvent(ev);
}
现在我可以通过MotionEvent获取onClick事件。 希望这对某人有帮助!     
        尽管可能会遇到类似的问题,但这可能早就应该解决了。解决此问题的方法是,在视频视图的顶部放置一个透明的图像视图,然后在图像视图上侦听onClick事件,然后再对视频视图执行我想做的任何事情。     
        我意识到这是一个古老的问题,但我想通过一个简单的解决方法来解决。我无法回答为什么这行不通-我认为这似乎是一个很大的疏忽。但是一个简单的解决方法是将VideoView作为唯一的View放在FrameLayout内,并在布局上设置OnClickListener。不理想,但是可以。     
        如果您希望触摸视频的特定部分来执行操作,则可以很好地使用在视频视图上透明的按钮。     
        VideoView是包含mdeiaplayer和surfaceView的包装。您可以通过MediaController进行交互,也可以编写自己的SurfaceView并实现onClick事件。     
        您可以尝试手势叠加视图 您应该能够将此视图叠加在另一个视图之上,以获取触摸事件。 希望这可以帮助!     
        我可能已经使用onSetClickListener做到了这一点。这是您的帮助代码:
mVideoView.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //Here you put a condition for playing a video when you click on your video view.//
            if(my_video.isPressed())
            {   
                my_video.start();
            } else {
                Toast.makeText(getApplicationContext(), 
                    \"Not able to run This Video!\", 
                    Toast.LENGTH_LONG).show();
            }
        }
    });
    

要回复问题请先登录注册