2011-06-08 162 views
11

我的活动中有以下代码。在我的xml中,视频视图位于线性布局内。但是,点击视图时,onTouchListener不会触发。我试图将onTouchListener更改为vvLive,但那没有做任何事情。我也尝试将onTouchListener更改为onClickListener,但没有任何结果。任何人都知道为什么听众不开火?谢谢。onTouchListener不起作用

 private VideoView vvLive; 
     LinearLayout linearLayoutLiveVideo; 

     linearLayoutLiveVideo.setOnTouchListener(new OnTouchListener(){ 
      public boolean onTouch(View v, MotionEvent event){ 
       Log.d(TAG, "onTouch entered"); 
       if(event.getAction() == MotionEvent.ACTION_UP) { 
        Log.d(TAG, "ACTION_UP"); 

       } 
       return false; 
      } 
     }); 

编辑: 我意识到上面的代码实际工作。日食中的东西搞乱了LogCat。在我重新启动eclipse后,LogCat打印第一个日志“onTouch进入”。但是,“ACTION_UP”未被打印。我将MotionEvent更改为MotionEvent.ACTION_DOWN并立即打印LogCat。为什么ACTION_DOWN可以工作,但ACTION_UP不能?

+0

这些视图是在您的活动中显示的视图吗? – dmon 2011-06-08 13:58:45

+0

布局设置为true的“clicable”属性? – woodshy 2011-06-08 13:59:41

+0

@woodshy添加clickable = true并没有做任何事情 – yellavon 2011-06-08 14:58:49

回答

30

ACTION_UP因为你返回false和为此不“消费”的情况永远不会被发送到您的收听。返回true,您将获得开始事件(ACTION_DOWN)以及所有后续事件(ACTION_MOVE,然后ACTION_UP)。

1

修改您这样的代码,并尝试:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    Log.d(TAG, "onTouch entered"); 
    if(event.getAction() == MotionEvent.ACTION_UP) { 
     Log.d(TAG, "ACTION_UP"); 
     return super.onTouchEvent(event); 
    else 
     return false; 
} 
+0

setOnTouchListener怎么样?我还能使用它吗? – yellavon 2011-06-08 14:18:22

+0

是的,你必须使用该行。按照我给出的方式替换它下面的行并尝试。 – 2011-06-08 14:20:54

+1

错误:类型new View.OnTouchListener(){}必须实现继承的抽象方法View.OnTouchListener.onTouch(View,MotionEvent)'。它看起来像我不能使用onTouchListner与onTouchEvent? – yellavon 2011-06-08 14:39:44

0

我有脸这个问题和解决方案是: -

1,在你的XML设定的跟随着属性VideoView

机器人:可点击= “真” 在

2-只是你代码设置setOnClickListenerto视频视图,它将像魅力一样工作:

videoView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent=new Intent(CinemaDetailsActivity.this , FullScreenPlayerActivity.class); 
     intent.putExtra("url" , getIntent().getStringExtra("url")); 
     startActivity(intent); 
    } 
});