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

时间:2016-08-15 22:05:48

标签: android touch-event

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

diagram

片段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>
 ...

这里是片段C将片段附加到FrameLayouts的地方:片段C类:

...
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>

谢谢!

1 个答案:

答案 0 :(得分:0)

它实际上确实有效,但我注意到在我的代码中,它确实是这样做的(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然后FragmentA添加到fragment_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>
 ...