我想为YouTube Player API添加onClickListener事件 我尝试了很多解决方案,但所有解决方案都无效
我的一些尝试
YouTubePlayerView youTubePlayerView = findViewById(R.id.youtubePlayer);
youTubePlayerView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Log.d(TAG,"onClick");
}
});
YouTubePlayerView youTubePlayerView = findViewById(R.id.youtubePlayer);
youTubePlayerView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
Log.d(TAG,"onTouch");
return false;
}
});
此外,我尝试在YouTube播放器视图上方添加一个布局,使其透明,然后向该布局添加一个点击监听器,但播放器每次在几秒钟后就会停止
我最后一次尝试是使用GestureDetector类,但也没有成功
提前谢谢
答案 0 :(得分:0)
我试图在YouTube播放器视图上方添加布局, 透明,然后向此布局添加点击监听器,但播放器 几秒钟后停止
YouTube Player API
不允许在其上方显示任何视图,无论它是否可见,都将以ErrorReason关闭。
它也消耗所有触摸事件,而不共享它们。但是,您可以将父级Override
的 dispatchTouchEvent(MotionEvent)
方法ViewGroup
移至YouTubePlayerView
,然后窃取将这些触摸事件返回给踢自己的onClick()
回调。
要做的是,首先在xml布局文件中创建一个放置YouTubePlayerView
的容器。
youtube_player_view_layout.xml
<MyCustomFrameLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
<YouTubePlayerView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</YouTubePlayerView>
</MyCustomFrameLayout>
MyCustomFrameLayout
必须在布局xml中添加全限定名称,即使用 [my.class.package] + [ClassName]
MyCustomFrameLayout.java
public class MyCustomFrameLayout extends FrameLayout {
private boolean actionDownReceived = false;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
actionDownReceived = true;
break;
}
case MotionEvent.ACTION_MOVE: {
// No longer a click, probably a gesture.
actionDownReceived = false;
break;
}
case MotionEvent.ACTION_UP: {
if (actionDownReceived) {
performClick();
}
break;
}
}
return super.dispatchTouchEvent(event);
}
}
然后要做的就是在MyCustomFrameLayout
上设置点击监听器。
免责声明: 上面的代码未在IDE中进行测试,如果按原样复制,则可能无法正确运行。但是本质 思想的正确投影在这里。