[英]onTouchListener not working
我的活动中有以下代码。 在我的 xml 中,视频视图位于线性布局内。 但是,当单击视图时, onTouchListener
永远不会触发。 我尝试将onTouchListener
更改为vvLive
,但这并没有做任何事情。 我还尝试将onTouchListener
更改为onClickListener
,但没有。 有谁知道为什么听众没有开火? 谢谢。
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;
}
});
编辑:我意识到上面的代码确实有效。 eclipse 中的某些东西弄乱了 LogCat。 在我重新启动 eclipse 后,LogCat 打印第一个日志“onTouch 输入”。 但是,没有打印“ACTION_UP”。 我将 MotionEvent 更改为MotionEvent.ACTION_DOWN
并且 LogCat 现在打印。 为什么ACTION_DOWN
有效而ACTION_UP
无效?
ACTION_UP 永远不会发送给您的听众,因为您返回 false ,因此不要“消费”该事件。 返回true,您将获得开始事件(ACTION_DOWN)以及所有后续事件(ACTION_MOVE,然后是ACTION_UP)。
像这样修改您的代码并尝试:
@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;
}
我面临这个问题,解决方案是: -
1-在您的 xml 中将以下属性设置为 VideoView
android:clickable="true"
2-只需在您的代码集中 setOnClickListener 到 VideoView,它就会像魅力一样工作:
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);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.