单击透明区域时将触摸事件传递给底层视图,但允许单击按钮

Pass touch events to underlying view when click on transparent area, but allow clicks on buttons

我有一个问题,因为我不知道如何让 Fragment B 的透明背景将触摸事件传递给 Fragment A:

片段 C 的片段 B 位于片段 A 之上:片段 C XML:

...
    <FrameLayout
        android:id="@+id/fragment_A_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

    <FrameLayout
        android:id="@+id/fragment_B_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
 ...

这里是 Fragment C 将片段附加到那些 FrameLayouts 的地方:Fragment C class:

...
fragmentTransaction.add(R.id.fragment_A_container, FragmentA, TAG_FRAGMENT_A);
fragmentTransaction.add(R.id.fragment_B_container, FragmentB, TAG_FRAGMENT_B);
...

但是现在,我不知道如何只让工具栏和浮动操作按钮被点击,而后台的其余部分将点击事件传递给Fragment A?以下是 Fragment B 布局的基本思路:FragmentB XML:

<LinearLayout
    android:layout_gravity="bottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
        <android.support.design.widget.FloatingActionButton/>
        <android.support.v7.widget.Toolbar
            android:layout_gravity="bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
</LinearLayout>

谢谢!

它确实有效,但我注意到在我的代码中,它确实在这样做(FragmentD 是一个不透明的背景,意在 FragmentAFragmentB 下面):

fragmentTransaction.add(R.id.fragment_A_container, FragmentD, TAG_FRAGMENT_D);
fragmentTransaction.add(R.id.fragment_A_container, FragmentA, TAG_FRAGMENT_A);
fragmentTransaction.add(R.id.fragment_B_container, FragmentB, TAG_FRAGMENT_B);

我认为通过添加 FragmentD 然后 添加 FragmentAfragment_A_containerFragmentA 应该在最前面FragmentD,但我想情况并非如此。所以我通过将它们分成自己的 FrameLayouts 来保证顺序是正确的,并且效果很好:

已更新XML:

...
    <FrameLayout
        android:id="@+id/fragment_D_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

    <FrameLayout
        android:id="@+id/fragment_A_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

    <FrameLayout
        android:id="@+id/fragment_B_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
 ...