Android-VideoView-onTouch的行为不符合预期

Android-VideoView-onTouch的行为不符合预期,android,android-layout,android-intent,android-emulator,android-widget,Android,Android Layout,Android Intent,Android Emulator,Android Widget,我正在学习一个教程,并尝试在Android的VideoView上构建一个自定义视频播放器。 现在,当我触摸视频视图时,我想显示或隐藏媒体控制器。如果控制器已显示,则隐藏它们;如果控制器已隐藏,则显示它们 这些媒体控制器由位于视频视图上方的2个线性布局表示。 以红色突出显示的区域表示背景中的VideoView边框 我的问题是,当我触摸媒体控制器与视频视图重叠的区域时,媒体控制器被隐藏。这不是期望的效果,因为我没有直接接触视频视图,而是线性布局 那么,为什么当我单击LinearLayouts时,Vi

我正在学习一个教程,并尝试在Android的VideoView上构建一个自定义视频播放器。
现在,当我触摸视频视图时,我想显示或隐藏媒体控制器。如果控制器已显示,则隐藏它们;如果控制器已隐藏,则显示它们

这些媒体控制器由位于视频视图上方的2个线性布局表示。 以红色突出显示的区域表示背景中的VideoView边框

我的问题是,当我触摸媒体控制器与视频视图重叠的区域时,媒体控制器被隐藏。这不是期望的效果,因为我没有直接接触视频视图,而是线性布局

那么,为什么当我单击LinearLayouts时,Videoview会捕捉到触摸事件呢?

下面是我的
onTouch
实现:

@Override
    public boolean onTouch(View v, MotionEvent event) {

        if (!isMediaControlerShown) {
            topPanel.setVisibility(View.VISIBLE);
            bottomPanel.setVisibility(View.VISIBLE);
            isMediaControlerShown = true;
        } else {
            topPanel.setVisibility(View.GONE);
            bottomPanel.setVisibility(View.GONE);
            isMediaControlerShown = false;
        }
        return false;
    }
以及XML布局的scheleton:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<VideoView
        android:id="@+id/videoView"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content" />

<!-- The top panel of the Video Player -->

    <LinearLayout
        android:visibility="gone"
        android:id="@+id/top_panel"
        style="@style/VideoTopPanel"
        android:orientation="vertical" >

        <!-- ////// -->
    </LinearLayout>

<!-- The bottom panel of the Video Player -->

    <LinearLayout
        android:visibility="gone"
        android:id="@+id/bottom_panel"
        xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/VideoBottomPanel"
        android:orientation="vertical"
        android:layout_alignParentBottom="true"
        android:paddingBottom="@dimen/video_bottom_panel_padding_bottom"
        android:paddingTop="@dimen/video_bottom_panel_padding_top" >

       <!-- ////// -->
    </LinearLayout>
</RelativeLayout>

通过将单击侦听器设置为保存控件的视图,但不执行onClick()操作,问题得以解决
这样,视图接收到点击事件,并且没有消失。

Have
onTouch
返回true而不是
false
,因为您总是在处理触摸事件。如果您返回
false
,它将级联到下一个级别,直到找到
true
。谢谢您的评论。这没用。行为是这样的:一开始,媒体控制者就出现了,一开始,媒体控制者就消失了。所以控制器很快就被刷新了。