1

我有一个 TabLayout 和一个包含选项卡的 ViewPager。

ViewPager 位于 TabLayout 上方,因此 ViewPager 与 TabLayout 重叠,因此,在不同选项卡之间导航的 TabLayout 按钮不起作用,因为 ViewPager 正在拦截触摸事件。

我试图通过调用requestDisallowInterceptTouchEvent(true)ViewPager 来解决这个问题,但它没有解决这个问题。

我还创建了一个自定义 ViewPager 并覆盖了 onTouchEvent() 方法,如下所示:

 @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if (ev.getActionMasked() != MotionEvent.ACTION_MOVE) {
            return false;
        }
        else {
            return super.onTouchEvent(ev);
        }
    }

这允许 TabLayout 选项卡按钮接收触摸事件,但当 ViewPager 滚动足够多时,ViewPager 不会自动滚动到不同的片段。

简而言之,问题是:如何允许 ViewPager 重叠的 TabLayout 接收 ViewPager 在 TabLayout 之前拦截的触摸事件,同时允许 ViewPager 正常运行?

提前致谢

编辑:

这是 Activity 的基本 XML 表示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity"

    >


    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:elevation="50dp"
        />


    <android.support.design.widget.TabLayout
        android:layout_marginTop="?actionBarSize"
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:minHeight="?attr/actionBarSize"
        android:layout_gravity="bottom"
        app:tabMode="fixed"
        android:background="@color/purple_light"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:tabMaxWidth="0dp"
        app:tabGravity="fill"
        android:clickable="true"
        />


    <CustomViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/viewPager"
        android:layout_below="@+id/toolbar_layout"
        android:clickable="false"
        />

    </RelativeLayout>

注意:我通过将 TabLayout 片段的上边距设置为足以让它们显示在 TabLayout 下方,从而使 ViewPager 页面看起来位于 TabLayout 下方

onClick这是ViewPager 内的视图(用于显示其他全屏视图的功能)展开之前的 Activity 基本图

未展开的布局

这是在寻呼机中单击视图显示其他内容后我的 Activity 的基本图:

在此处输入图像描述

您可以在第二张图中看到 TabLayout 被 ViewPager 内容覆盖

4

0 回答 0